VB6 GDI+ 入门教程[7] Graphics 其他内容
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 其他内容的更多相关文章
- VB6 GDI+ 入门教程[3] 笔、刷子、矩形、椭圆绘制
http://vistaswx.com/blog/article/category/tutorial/page/2 VB6 GDI+ 入门教程[3] 笔.刷子.矩形.椭圆绘制 2009 年 6 月 1 ...
- VB6 GDI+ 入门教程[6] 图片
http://vistaswx.com/blog/article/category/tutorial/page/2 VB6 GDI+ 入门教程[6] 图片 2009 年 6 月 19 日 15条评论 ...
- VB6 GDI+ 入门教程[8] Bitmap魔法(1):创建
http://vistaswx.com/blog/article/category/tutorial/page/2 VB6 GDI+ 入门教程[8] Bitmap魔法(1):创建 2009 年 9 月 ...
- VB6 GDI+ 入门教程[1] GDI+介绍
http://vistaswx.com/blog/article/category/tutorial/page/2 VB6 GDI+ 入门教程[1] GDI+介绍 2009 年 6 月 18 日 17 ...
- VB6 GDI+ 入门教程[2] GDI+初始化
http://vistaswx.com/blog/article/category/tutorial/page/2 VB6 GDI+ 入门教程[2] GDI+初始化 2009 年 6 月 18 日 7 ...
- VB6 GDI+ 入门教程[4] 文字绘制
http://vistaswx.com/blog/article/category/tutorial/page/2 VB6 GDI+ 入门教程[4] 文字绘制 2009 年 6 月 18 日 7条评论 ...
- VB6 GDI+ 入门教程[5] 基础绘图小结
http://vistaswx.com/blog/article/category/tutorial/page/2 VB6 GDI+ 入门教程[5] 基础绘图小结 2009 年 6 月 18 日 4条 ...
- VB6 GDI+ 入门教程[9] Bitmap魔法(2):数据读写
本文转自 http://vistaswx.com/blog/article/category/tutorial/page/2 VB6 GDI+ 入门教程[9] Bitmap魔法(2):数据读写 200 ...
- GDI+_入门教程【一】
GDI For VisualBasic6.0 [一]文件下载:GDI+ For VB6[一] 简单绘图实例演示百度网盘 1 '以下为作者[vIsiaswx]的教程 '(该教程发布的原地址已无法访问,此 ...
随机推荐
- Apache Commons-pool实现对象池(包括带key对象池)
Commons-pool是一个apache开源组织下的众多项目的一个.其被广泛地整合到众多需要对象池功能的项目中. 官网:http://commons.apache.org/proper/common ...
- ci 基础知识
//建立虚拟主机 2.下载完毕后,解压,并将其复制粘贴到程序的主目录(d:/wamp/xmall/),然后再将其重命名为"myshop",那么"myshop" ...
- hnu Counting ones 统计1-n 二进制中1的个数
Counting ones Time Limit: 1000ms, Special Time Limit:2500ms, Memory Limit:65536KB Total submit users ...
- Android:onNewIntent()触发机制及注意事项
一.onNewIntent() 在IntentActivity中重写下列方法:onCreate onStart onRestart onResume onPause onStop onDestro ...
- Java总结反射
[案例1]通过一个对象获得完整的包名和类名 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 package Reflect; /** * 通过一个对象获得完整的包名和类名 ...
- WebForm组合查询
封转类 using System; using System.Collections.Generic; using System.Linq; using System.Web; /// <sum ...
- 拖拽碰撞效果,高级浏览器下全部搞定(ie6-8还没有搞定)
<!DOCTYPE HTML> <html lang="en-US"> <head> <meta charset="UTF-8& ...
- 。JavaSE------初识Java
我的老师告诉我,命运眷顾有志者,天道酬勤. 有时在梦里幻想的再多终究也只是梦, 不如脚踏实地一步步往前走来的踏实. ------------------------------------------ ...
- [原创]VB注册机独辟蹊径-----注册机也可以这样写
近段时间接了个项目,是关于一个称重传感器的上位机系统,需要一机一码针对不同的客户机分别注册,第一次注册完后,下次打开后不必注册. 刚开始想用正规的注册机办法去完成,搜罗了半天,发现现在大部分的硬盘注册 ...
- XSS技巧综合
这周六会在公司分享经验和技巧,把自己的和网上的一些技巧来综合写一些,方便大家和自己: 普通的XSS,储存,反射,DOM 形成的无外乎就是输出点在html标签之间,html属性之间,成为JS代码,称为C ...