DX9绘制虚线抗锯齿线 划线扩展

绘制划线的实际效果图如下:

新建一个Form1,代码如下:

Private Sub Form_Load()'新手注意:游戏编程中,
'通常将窗体的 BorderStyle 设置为“Fixed single”即不允许改变窗体大小
'通常将窗体的 MinButton 设置为“True”即允许最小化
'通常将窗体的 MaxButton 设置为“False”即禁止最大化'初始化引擎并设置引擎初始化窗体和引擎分辨率,但最好是电脑常用的分辨率比如 640,480 、 800,600 、 1024,768 、 1366,768
CWVBDX9Initialization Me, 800, 600, CW_Windowed
'初始化引擎(目标窗体,横向分辨率,纵向分辨率,窗口模式/全屏模式)Do While CWGameRun = True         '进入游戏循环If CWD3DDevice9.TestCooperativeLevel = 0 And Me.WindowState <> 1 Then  '检测是否可以渲染(设备正常并且窗体未最小化时渲染)CWBeginScene    '准备好绘制场景'关于颜色:可以使用BAS模块中已经设置好的常用颜色,也可用CWColorARGB函数自行转换,A分量为不透明度,RGB分量对应的颜色请参考RGB颜色表'关于颜色权重:颜色权重越高,该点的颜色在渐变过程中所占的区域就越大'画线(起点横坐标,起点纵坐标,终点横坐标,终点纵坐标,颜色)CWDrawLine 80, 50, 150, 50, CWRed'画线2(起点横坐标,起点纵坐标,终点横坐标,终点纵坐标,颜色[,抗锯齿,样式,线宽,缩放])CWDrawLine2 80, 75, 150, 75, CWRed                          ' 与原版对比CWDrawLine2 80, 100, 150, 100, CWRed, , , 2!                ' 粗线CWDrawLine2 80, 125, 150, 125, CWRed, True                  ' 抗锯齿线CWDrawLine2 80, 150, 150, 150, CWRed, , CWLP_Dash           ' 虚线 ___ 'CWDrawLine2 80, 175, 150, 175, CWRed, , CWLP_Dot            ' 虚线 _ 'CWDrawLine2 80, 200, 150, 200, CWRed, , CWLP_DashDot        ' 虚线 ___ _ 'CWDrawLine2 80, 225, 150, 225, CWRed, , CWLP_DashDotDot     ' 虚线 _ ___ _ 'CWDrawLine2 80, 250, 150, 250, CWRed, , CWLP_Minus          ' 虚线 __ 'CWDrawLine2 80, 275, 150, 275, CWRed, , CWLP_DashMinus      ' 虚线 ___ __ 'CWDrawLine2 80, 300, 150, 300, CWRed, , CWLP_MinusDot       ' 虚线 __ _ 'CWDrawLine2 80, 325, 150, 325, CWRed, , CWLP_MinusDotDot    ' 虚线 _ __ _ 'CWDrawLine2 80, 350, 150, 350, CWRed, , CWLP_Point          ' 虚线. . . ’CWDrawLine2 80, 375, 150, 375, CWRed, , CWLP_InvPoint       ' 虚线 . . .’CWDrawLine2 80, 400, 150, 400, CWRed, , CWLP_DotPointPoint  ' 虚线 . _ .’'抗锯齿对比CWDrawLine 200, 50, 350, 100, CWGreen               ' 原版画线CWDrawLine2 200, 75, 350, 125, CWGreen, False       ' 新版画线(有锯齿)CWDrawLine2 200, 100, 350, 150, CWGreen, True       ' 新版画线(抗锯齿)CWDrawLine2 200, 125, 350, 175, CWGreen, False, , 2!    ' 新版画线(加粗、有锯齿)CWDrawLine2 200, 150, 350, 200, CWGreen, True, , 2!     ' 新版画线(加粗、抗锯齿)CWDrawLine2 200, 175, 350, 225, CWGreen, False, , 5!    ' 新版画线(更粗、有锯齿)CWDrawLine2 200, 200, 350, 250, CWGreen, True, , 5!     ' 新版画线(更粗、抗锯齿)CWDrawLine2 200, 225, 350, 275, CWGreen, False, CWLP_DashDot, 2!        ' 新版画线(有锯齿、虚线、加粗、拉长)CWDrawLine2 200, 250, 350, 300, CWGreen, True, CWLP_DashDot, 2!         ' 新版画线(抗锯齿、虚线、加粗、拉长)CWDrawLine2 200, 275, 350, 325, CWGreen, False, CWLP_DashDot, 2!, 2!    ' 新版画线(有锯齿、虚线、加粗、拉长)CWDrawLine2 200, 300, 350, 350, CWGreen, True, CWLP_DashDot, 2!, 2!     ' 新版画线(抗锯齿、虚线、加粗、拉长)'画渐变色线(起点横坐标,起点纵坐标,终点横坐标,终点纵坐标,起点颜色权重,重点颜色权重,起点颜色,终点颜色)CWDrawLineEx 400, 50, 550, 50, 1, 2.5, CWRed, CWBlue'画多段线(坐标数组,颜色[,抗锯齿,样式,线宽,缩放])Dim pts(0 To 5) As D3DXVECTOR2MakeStar pts, 100, 500, 200CWDrawLine2Ex pts, CWBlueMakeStar pts, 100, 500, 400CWDrawLine2Ex pts, CWBlue, True, CWLP_Dot, 2!, 2!CWPresentScene   '呈现绘制的场景'*******************************以下为固定写法,不要轻易改动***********************************Else                 '当不满足渲染条件时CWResetDevice       '修复设备End IfLoopCWVBDX9Destory     '销毁CoolWind引擎End '退出
'*******************************以上为固定写法,不要轻易改动***********************************End Sub
'画星星
Private Sub MakeStar(pts() As D3DXVECTOR2, ByVal R!, ByVal X!, ByVal Y!)Dim I&, L&, Ang!: L = UBound(pts) - LBound(pts)For I = LBound(pts) To UBound(pts)With pts(I)Ang = I * 4! * Pi / L.X = X + R * Sin(Ang).Y = Y - R * Cos(Ang)End WithNextEnd Sub

BAS模块还是VBDX9BAS.bas

**ID3DXLine接口介绍:ID3DXLine接口使用纹理三角形实现线条绘制。ID3DXLine接口继承自IUnknown接口。
在VB6中调用如下:

Public CWLine As D3DXLine
D3DXCreateLine CWD3DDevice9, CWLine

ID3DXLine还具有以下类型的成员:

1,ID3DXLine::Begin:准备用于绘制线的设备。
c++调用如下:

HRESULT Begin();

vb6调用如下:

CWLine.Begin

2,ID3DXLine::Draw:在屏幕空间中绘制线条。输入以数组的形式,定义线条上的点(D3DXVECTOR2(描述包含运算符重载和类型强制转换的双分量向量。))。
C++调用原型:

typedef struct D3DXVECTOR2 {FLOAT x;FLOAT y;
} D3DXVECTOR2, *LPD3DXVECTOR2;

自爱VB6中定义:

Type D3DXVECTOR2
x as single
y as single
End type

3,ID3DXLine::End:将设备状态还原为调用ID3DXLine::Begin时的状态。
C++调用:

HRESULT End();

在VB6中调用如下:

CWLine.End

4,ID3DXLine::SetAntialias:切换线条抗锯齿。
C++调用:

HRESULT SetAntialias([in] BOOL bAntiAlias
);

参数说明:bAntiAlias:切换反锯齿的打开和关闭。TRUE打开反锯齿,FALSE关闭反锯齿。

在VB6中调用:

      Optional ByVal Antialias As BooleanCWLine.SetAntialias Antialias

5,ID3DXLine::SetPattern:将点画图案应用于线。
C++调用:

HRESULT SetPattern([in] DWORD dwPattern
);

参数说明:dwPattern,描述点画图案:1是不透明的,0是透明的。

在VB6中调用:

Optional ByVal  Pattern AS  Boolean
CWLine.SetPattern Pattern

6,ID3DXLine::SetWidth:指定线条的粗细。
C++调用:

HRESULT SetWidth([in] FLOAT fWidth
);

参数说明:fWidth,描述线条宽度。
在VB6中调用:

Optional ByVal Width As Single = 1!
CWLine.SetWidth Width

7,ID3DXLine::SetPatternScale:沿线方向拉伸点画图案。
C++调用:

HRESULT SetPatternScale([in] FLOAT fPatternScale
);

参数说明:fPatternScale,缝合图案缩放值。1.0f是默认值,表示无缩放。小于1.0f的值会缩小图案,大于1.0的值会拉伸图案。
在VB6中调用:

Optional ByVal PatternScale As Single = 1!CWLine.SetPatternScale PatternScale

8,ID3DXLine::OnLostDevice:使用此方法释放对视频内存资源的所有引用并删除所有状态块。每当设备丢失或重置设备之前,应调用此方法。
c++调用:

HRESULT OnLostDevice();

在vb6中调用:

CWLine.OnLostDevice

9,ID3DXLine::OnResetDevice:使用此方法重新获取资源并保存初始状态。
C++调用:

HRESULT OnResetDevice();

在VB6中调用:

 CWLine.OnResetDevice

DX9绘制虚线抗锯齿线-------VB6编程学习DX9游戏编程DirectX9编程2D小游戏源码冷风引擎CoolWind2D游戏引擎(13)相关推荐

  1. DX9的一些方法介绍-------VB6编程学习DX9游戏编程DirectX9编程2D小游戏源码冷风引擎CoolWind2D游戏引擎(9)

    DX9的一些方法介绍(IDirect3D9) 在前边的源码中,引用了一些DX9的方法,我这里做了一个笔记,大家可以看看. 1,IDirect3DDevice9::SetTexture 方法:将纹理分配 ...

  2. c语言化学专业,通化c语言编程学习,通化学c语言编程学校,通化学c语言编程报个培训班怎么样...

    通化c语言编程学习,通化学c语言编程学校,通化学c语言编程报个培训班怎么样 首页 > C语言 > 通化c语言编程学习 作者:镀金池   发布时间:2017-10-21 08:17 map ...

  3. 老男孩GO语言线下培训班1期整套教程(完整18天含源码)

    老男孩GO语言线下培训班1期整套教程(完整18天含源码) 老男孩教育-Go语言第一期(共18天 含课程源码) 课程详细目录: ├─L001-Go语言-mp4 │      01 Go开发1期 day1 ...

  4. python删除链表中重复的节点_Java编程删除链表中重复的节点问题解决思路及源码分享...

    一. 题目 在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针. 二. 例子 输入链表:1->2->3->3->4->4-&g ...

  5. c语言程序设计自学跟谁好,双辽c语言编程学习,双辽学c语言编程哪个好,双辽学c语言编程自学好还是报班好...

    双辽c语言编程学习,双辽学c语言编程哪个好,双辽学c语言编程自学好还是报班好 首页 > 软件 > 双辽c语言编程学习 作者:镀金池   发布时间:2017-12-07 05:48 一个C语 ...

  6. c语言程序设计需要学多久,九江c语言编程学习,九江学c语言编程报班,九江学c语言编程一般要多久才能学会...

    九江c语言编程学习,九江学c语言编程报班,九江学c语言编程一般要多久才能学会 首页 > C语言 > 九江c语言编程学习 作者:镀金池   发布时间:2017-10-18 14:11 据ID ...

  7. 云开发谁是卧底线下小游戏发牌助手微信小程序源码-亲测可用

    云开发谁是卧底线下小游戏源码,发牌助手微信小程序源码. "谁是卧底OL"是一个非常有趣,风靡全国的比拼语言表述能力.知识面与想象力的游戏. 谁是卧底OL是一款由开发商北游科技倾力打 ...

  8. c语言编程学多久,丰城c语言编程学习,丰城学c语言编程的学校,丰城学c语言编程一般要多久才能学会...

    丰城c语言编程学习,丰城学c语言编程的学校,丰城学c语言编程一般要多久才能学会 首页 > 软件 > 丰城c语言编程学习 作者:镀金池   发布时间:2018-04-09 16:40 在之后 ...

  9. 江门C语言培训,江门c语言编程学习,江门学c语言编程培训,江门学c语言编程效果怎么样...

    江门c语言编程学习,江门学c语言编程培训,江门学c语言编程效果怎么样 首页 > C语言 > 江门c语言编程学习 作者:镀金池   发布时间:2017-10-18 09:25 在初期的C语言 ...

最新文章

  1. Ceph Upstream 添加 InfiniBand RDMA 互联支持
  2. 指纹浏览器 开源 linux,浏览器指纹--Canvas指纹
  3. 解决ajax劫持,Ajax实现检测网站劫持的方法
  4. html+店铺+可视化编辑器,开源在线可视化HTML编辑器 – xhEditor | 骤雨打新荷
  5. 起名算法 php,PHP实现各种经典算法详解
  6. java中Runnable和Callable的区别
  7. 微信支付—微信H5支付「PC端扫码支付」
  8. 【Hihocoder - offer编程练习赛86 - C】跳数游戏(STLset或map预处理,dp)
  9. 越狱Season 1- Episode 16
  10. MariaDB和MySQL性能测试比较
  11. Cartographer+LOAM+ LIO-SAM核心算法与源码剖析(室内+室外)
  12. Pom文件配置参数详解
  13. css写三角兼容ie6
  14. 第十七届全国大学智能车竞赛赛场合影集锦
  15. php读音量大小,Android_Android中实时获取音量分贝值详解,基础知识 度量声音强度,大 - phpStudy...
  16. 【AV1 编码器研究一】aomenc.exe命令行参数简析
  17. 快速修复IE浏览器方案
  18. elasticsearch的使用
  19. 【自学笔记】尚硅谷数据结构与算法Chapter 4 栈
  20. 关于Oracle导出到csv文件的脚本-spool方法

热门文章

  1. 小米未来将搭载鸿蒙系统,荣耀发布智慧屏将搭载鸿蒙系统小米电视的江湖老大地位还能保得住吗...
  2. (可能是)Magic Leap AR眼镜最技术的评测 | 同行相评
  3. 计算机网络第4章 网络层(自整理万字图文笔记)
  4. Linux 平台下PCI 接口视频采集卡的驱动程序编写技术
  5. 【微信交流分享群】百度集卡支付宝敬业福百度互助群/春晚红包/集卡换卡组队互助花花卡...
  6. python加密方法
  7. 什么是2147483647 ?
  8. jsp页面返回上一页,在两个页面死循环
  9. Android面试必问的Activity,初阶,中高阶问法,你都掌握了吗?(要求熟读并背诵全文)
  10. 2022.10.9 第二十五次周报