<<  Word宏——自动带圈数字+拼音辅助|vIstaswx Image Converter 1.0  >>
    VB6 GDI+ 入门教程[7] Graphics 其他内容 - [Visual Basic]

    版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
    http://vistaswx.blogbus.com/logs/45641502.html

    1.其他创建方式

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

    (1)hWnd(FromHWND)

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

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

     

    'Dim Graphics As Long
    GdipCreateFromHWND Me.hWnd, Graphics
    

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

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

    以下代码是从img创建Graphics

     

    'Dim img As Long, Graphics As Long
    'GdipLoadImageFromFile StrPtr("C:\1.png"), img
    GdipGetImageGraphicsContext Graphics, img
    

    2.清除画布内容

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

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

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

     

    'Dim Graphics As Long
    GdipGraphicsClear Graphics, &HFFFFFFFF
    

    3.整体旋转

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

    以下代码将Graphics旋转20度

     

    'Dim Graphics As Long
    GdipRotateWorldTransform Graphics, 20, MatrixOrderAppend
    

    4.整体平移

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

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

     

    'Dim Graphics As Long
    GdipTranslateWorldTransform Graphics, 10, 20, MatrixOrderAppend
    

    5.剪辑(遮掩层)

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

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

     

    'Dim Graphics As Long
    GdipSetClipRectI Graphics, 10, 20, 100, 100, CombineModeReplace
    

    设置了当然还有取消——

     

    'Dim Graphics As Long
    'GdipSetClipRectI Graphics, 10, 20, 100, 100, CombineModeReplace
    GdipResetClip Graphics
    




    评论

  • 自古英雄出少年啊!
  • 你才14岁?
    vIstaswx回复army8735说:
    猜对了。。
    2009-09-05 23:02:01