您的位置:首页 > 编程语言 > VB

VB6 GDI+ 入门教程[7] Graphics 其他内容

2014-10-19 16:21 531 查看
http://vistaswx.com/blog/article/category/tutorial/page/2
VB6 GDI+ 入门教程[7] Graphics 其他内容
2009 年 9 月 5 日 4条评论
标签: GdiPlus,vb 分类: Tutorial,VB6 GDI+

点击下载 vIstaswx VB6 Gdi+ 模块(最后更新 2011/2/8)
1.其他创建方式

我们之前创建Graphics都是从DC创建的,不过GDI+还有几种创建画布方法,且很重要哦

(1)hWnd(FromHWND)

如名,从句柄创建。本人不怎么用这个。

以下代码从窗体句柄创建Graphics

(2)Image/Bitmap(FromImage) [Important]

某些人用.Net发现.Net有神奇的从图片创建(Graphics.FromImage)的办法,这个办法主要用来保存为图片用。那么FromImage的原型是什么呢?其实它的名字很囧:GdipGetImageGraphicsContext。它可以从Image创建Graphics,当然从Bitmap也可以。

以下代码是从img创建Graphics

2.清除画布内容

对于有透明通道的绘制,每次绘制都必须擦除前面所画,否则会透明重叠……

办法1是自己FillRectangle一下,不过GDI+已经给我们更加直接的办法了:

以下代码用白色清除Graphics上内容

Private Declare Function GdipGraphicsClear Lib "gdiplus" (ByVal graphics As Long, ByVal lColor As Long) As GpStatus


3.整体旋转

这个是整体的旋转,就是把画布旋转了……所以说~~如果只有一张图片那么旋转后图片边缘就是锯齿的(因为画布的边缘没有消除锯齿的功能)

以下代码将Graphics旋转20度

4.整体平移

这个也是整体的,整体的平移一个量,是增量,相对量,不是绝对量。

以下代码将Graphics向右,向下平移10px,20px

Private Declare Function GdipTranslateWorldTransform Lib "gdiplus" (ByVal graphics As Long, ByVal dx As Single, ByVal dy As Single, ByVal order As MatrixOrder) As GpStatus

Public Enum MatrixOrder
MatrixOrderPrepend = 0
MatrixOrderAppend = 1
End Enum


5.剪辑(遮掩层)

剪辑区域设置以后,绘制的内容就会仅限于这个区域内;超出的部分将被无视掉。但是原来的内容还在原来地方,不受剪辑区域影响。

以下代码设置一块剪辑区域,X=10 Y=20 Width=100 Height=100 ( (10,20) – (110,120) )

设置了当然还有取消——
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: