http://vistaswx.com/blog/article/category/tutorial/page/2
2009 年 9 月 5 日 4条评论
标签: GdiPlus,vb 分类: Tutorial,VB6 GDI+

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上内容

Private Declare Function GdipGraphicsClear Lib "gdiplus" (ByVal graphics As Long, ByVal lColor As Long) As GpStatus
 
'Dim Graphics As Long
GdipGraphicsClear Graphics, &HFFFFFFFF

3.整体旋转

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

以下代码将Graphics旋转20度

 
'Dim Graphics As Long
GdipRotateWorldTransform Graphics, 20, MatrixOrderAppend

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
 
'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

设置了当然还有取消——

 

VB6 GDI+ 入门教程[7] Graphics 其他内容的更多相关文章

  1. VB6 GDI+ 入门教程[3] 笔、刷子、矩形、椭圆绘制

    http://vistaswx.com/blog/article/category/tutorial/page/2 VB6 GDI+ 入门教程[3] 笔.刷子.矩形.椭圆绘制 2009 年 6 月 1 ...

  2. VB6 GDI+ 入门教程[6] 图片

    http://vistaswx.com/blog/article/category/tutorial/page/2 VB6 GDI+ 入门教程[6] 图片 2009 年 6 月 19 日 15条评论 ...

  3. VB6 GDI+ 入门教程[8] Bitmap魔法(1):创建

    http://vistaswx.com/blog/article/category/tutorial/page/2 VB6 GDI+ 入门教程[8] Bitmap魔法(1):创建 2009 年 9 月 ...

  4. VB6 GDI+ 入门教程[1] GDI+介绍

    http://vistaswx.com/blog/article/category/tutorial/page/2 VB6 GDI+ 入门教程[1] GDI+介绍 2009 年 6 月 18 日 17 ...

  5. VB6 GDI+ 入门教程[2] GDI+初始化

    http://vistaswx.com/blog/article/category/tutorial/page/2 VB6 GDI+ 入门教程[2] GDI+初始化 2009 年 6 月 18 日 7 ...

  6. VB6 GDI+ 入门教程[4] 文字绘制

    http://vistaswx.com/blog/article/category/tutorial/page/2 VB6 GDI+ 入门教程[4] 文字绘制 2009 年 6 月 18 日 7条评论 ...

  7. VB6 GDI+ 入门教程[5] 基础绘图小结

    http://vistaswx.com/blog/article/category/tutorial/page/2 VB6 GDI+ 入门教程[5] 基础绘图小结 2009 年 6 月 18 日 4条 ...

  8. VB6 GDI+ 入门教程[9] Bitmap魔法(2):数据读写

    本文转自 http://vistaswx.com/blog/article/category/tutorial/page/2 VB6 GDI+ 入门教程[9] Bitmap魔法(2):数据读写 200 ...

  9. GDI+_入门教程【一】

    GDI For VisualBasic6.0 [一]文件下载:GDI+ For VB6[一] 简单绘图实例演示百度网盘 1 '以下为作者[vIsiaswx]的教程 '(该教程发布的原地址已无法访问,此 ...

随机推荐

  1. JS脚本语言里的循环

    js脚本语言:  循环:(循环操作某一个功能(执行某段代码)) 四要素: 循环初始值  循环条件  状态改变  循环体 for(穷举  迭代) while 举例:(穷举) 与7相关的数 <scr ...

  2. FlashFXP命令行

    flashfxp.exe -upload ftp://user:pass@ip:port -localpath="本地路径"  -remotepath="远程FTP上的路 ...

  3. 动手动脑final

    1.回答问题 1. 下边的程序运行结果是什么? 2.   你如何解释会得到这样的输出? 3.   计算机是不会出错的,之所以得到这样的运行结果也是有原因的,那么从这些运行结果中,你能总结出Java的哪 ...

  4. 十二 个经典 Linux 进程管理命令介绍

    执行中的程序在称作进程.当程序以可执行文件存放在存储中,并且运行的时候,每个进程会被动态得分配系统资源.内存.安全属性和与之相关的状态.可以有多个进程关联到同一个程序,并同时执行不会互相干扰.操作系统 ...

  5. 编写Music类

    package a; public class Instrument { public void play() { System.out.println("弹奏乐器"); } } ...

  6. [转]Unity3D:Gizmos画圆(原创)

    using UnityEngine; using System; public class HeGizmosCircle : MonoBehaviour { public Transform m_Tr ...

  7. <iframe>标签的一些说明

    <iframe>标签里的marginwidth/marginheight属性定义的是框架内部的margin(框架和其父元素之间的margin可以用style="margin:.. ...

  8. Java面试宝典2015版

    这套面试题主要目的是帮助那些还没有java软件开发实际工作经验,而正在努力寻找java软件开发工作的朋友在笔试时更好地赢得笔试和面试.由于这套面试题涉及的范围很泛,很广,很杂,大家不可能一天两天就看完 ...

  9. tomcat源码导入eclipse步骤

    1. 获取源代码 方式一:从官网http://tomcat.apache.org/download-70.cgi 直接下载,官网提供了Binary 和 Source Code两种下载方式,要研究tom ...

  10. mysql数据小姿势

    CREATE TABLE `information` (  `NUMBER` bigint(20) NOT NULL AUTO_INCREMENT,//将number设为自增字段  `USER_NAM ...