VB6 GDI+ 入门教程[7] Graphics 其他内容
1.其他创建方式
我们之前创建Graphics都是从DC创建的,不过GDI+还有几种创建画布方法,且很重要哦
(1)hWnd(FromHWND)
如名,从句柄创建。本人不怎么用这个。
以下代码从窗体句柄创建Graphics
'Dim Graphics As LongGdipCreateFromHWND 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"), imgGdipGetImageGraphicsContext 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 LongGdipGraphicsClear Graphics, &HFFFFFFFF |
3.整体旋转
这个是整体的旋转,就是把画布旋转了……所以说~~如果只有一张图片那么旋转后图片边缘就是锯齿的(因为画布的边缘没有消除锯齿的功能)
以下代码将Graphics旋转20度
'Dim Graphics As LongGdipRotateWorldTransform 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 LongGdipTranslateWorldTransform Graphics, 10, 20, MatrixOrderAppend |
5.剪辑(遮掩层)
剪辑区域设置以后,绘制的内容就会仅限于这个区域内;超出的部分将被无视掉。但是原来的内容还在原来地方,不受剪辑区域影响。
以下代码设置一块剪辑区域,X=10 Y=20 Width=100 Height=100 ( (10,20) – (110,120) )
'Dim Graphics As LongGdipSetClipRectI 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]的教程 '(该教程发布的原地址已无法访问,此 ...
随机推荐
- php基础复习(3)文件上传于下载
一. 客户端配置: 表单页面 表单的发送方式是post 添加enctype = “multipart/form-data” <form action="doaction.php&q ...
- Android开发之获取相册照片和获取拍照照片
在Android的开发过程中,我们可能会读取手机里面的照片或者通过相机拍摄获取照片,这是两种常用的获取图片的方式,在做项目过程中也会经常遇到,下面来介绍一下这两种获取方式.. 1.从本地相册获取照片: ...
- Python3基础 逻辑与 and
镇场诗:---大梦谁觉,水月中建博客.百千磨难,才知世事无常.---今持佛语,技术无量愿学.愿尽所学,铸一良心博客.------------------------------------------ ...
- C#String详解
字符串:stringLength - 字符串的长度. TrimStart() 压缩空格即消除字符串开始空格TrimEnd() 消除结尾空格Trim() 同时消除开头和结尾空格.注:中间空格不消除,因为 ...
- Socket重叠IO
1.为什么到现在才弄懂这个 不知道这个Socket重叠IO这种模型是不是socket IO完成端口的基础,不过我感觉,学习一下这个再去学习socket IO完成端口是比较有好处的. 这个Scoket重 ...
- 注册dll失败
注册DLL的时候一出现错误: win8下: (右键弹出) 如果再不行, 64位系统下,把DLL移动到C:\Windows\SysWOW64下 更改路径
- kaili 2.0 开启ssh远程
第一步:更改sshd_config文件
- CUBRID学习笔记 9 创建示例数据库
如果你安装的时候没有装数据库,可以后期装 其实和上文基本差不多. cd ~ mkdir CUBRID_databases cd CUBRID_databases mkdir demodb cd dem ...
- poj 1279 -- Art Gallery (半平面交)
鏈接:http://poj.org/problem?id=1279 Art Gallery Time Limit: 1000MS Memory Limit: 10000K Total Submis ...
- HDU-4511 小明系列故事——女友的考验 floyd变种-标号递增最短路
题意:给定N个点,现在要求出从1号点到N号点的最短路.题目给的限制条件就是对于某条路径是不能够走的,但是可以选择某段路径走,另外就是所走的路径的标号必须是递增的. 分析:由于给定的是一些列的坐标点,这 ...