2024年4月6日发(作者:)
DirectX与编程(十一)全屏绘图与字体颜色的改变
这次讲的是全屏下的操作、自定义字体颜色和绘制各种图形。
===============华丽的分割线===============
学习内容
·掌握全屏的实现方法
·能够自定义字体和颜色
·能够利用DirectDraw绘制各种图形
===============华丽的分割线===============
这次的范例运行后自动切换到全屏,点击绘制按钮绘制图形,点击退出按钮退出程序。
打开,新建一个项目,添加DirectDraw的引用,在窗口中放置两个按钮(Button),
控件设计请参考下图:
在类头输入如下代码开导入名称空间:
Imports X
Imports Draw
声明设备和表面:
Dim vDev As New Device
Dim vSurface As Surface
===============华丽的分割线===============
为了全屏下隐藏窗口的标题栏,将窗口的FormBorderStyle属性设置为None
rderStyle =
下面设置设备的协作级别,承载控件依旧是窗口,协作类型选择为FullscreenExclusive,代
表全屏独占模式
perativeLevel(Me, reenExclusive)。
此时系统会自动将程序切换到全屏模式。
下面设置全屏模式下的显示模式,我们在此设置为640*320的分辨率,16位色深(65536色),
85Hz刷新率,语句如下:
playMode(640, 480, 16, 85, True)
最后一个参数是StandardVGAMode(标准VGA模式),根据SDK的注释是大概是设置硬件
显示驱动模式,不管怎样,设置为True即可。
在此可能会有两个问题
一、如果窗口的大小不等于分辨率,DirectDraw会自动将窗口的大小调整到分辨率大小,因
此,你无须担心窗口的尺寸问题。
二、设置了显示器不支持的显示模式,如果出现了该问题,该语句会抛出一个
NotSupportedException的异常,我们只要进行捕捉即可,因此该语句应该放入Try块中,
如下:
Try
playMode(640, 480, 16, 85, True)
Catch ex As NotSupportedException
MsgBox("您的显示器不支持指定显示模式,程序将以当前分辨率运行。",
al Or , "错误")
End Try
===============华丽的分割线===============
下面就是表面的初始化:
Dim vSurfaceCaps As New SurfaceCaps
ySurface = True
emory = True
Dim vSurfaceDes As New SurfaceDescription(vSurfaceCaps)
vSurface = New Surface(vSurfaceDes, vDev)
ansparency = True
因为我们需要自定义绘图的字体和颜色,因此我们需要修改表面的某些属性:
首先修改字体,将字体的句柄传入表面中即可:
Dim vFont As IntPtr = New Font("黑体", 25, Or ).ToHfont
ndle = vFont
然后修改表面的前景色(ForeColor)和字体背景色(FontBackColor),前景色将影响所有绘
制线条和文字的显示颜色,字体背景色则会影响所有文字的背景颜色,除非已经设置字体背
景透明:
lor =
ckColor =
如此,初始化工作全部完成。
===============华丽的分割线===============
下面就是填充“绘制”按钮的点击事件:
'画直线
ne(0, 0, 640, 480)
'画矩形
x(5, 5, 635, 475)
'画圆
rcle(320, 240, 100)
'画椭圆
lipse(0, 100, 640, 380)
'画圆角矩形
undedBox(10, 10, 630, 470, 5, 5)
'填充
ill(New Rectangle(315, 235, 10, 10), )
'绘制透明背景文本
ansparency = True
发布评论