文档章节

GDI+ 学习记录(9): 纹理画刷 - TextureBrush

涂孟超
 涂孟超
发布于 2014/09/26 15:36
字数 281
阅读 9
收藏 0
点赞 0
评论 0
//纹理画刷
var
  g: TGPGraphics;
  img: TGPImage;
  tb: TGPTextureBrush;
begin
  g := TGPGraphics.Create(Canvas.Handle);
  img := TGPImage.Create('c:\temp\small.jpg');
  tb := TGPTextureBrush.Create(img);

  g.FillEllipse(tb, 0, 0, Self.ClientWidth, Self.ClientHeight);

  img.Free;
  tb.Free;
  g.Free;
end;

 
 
 
 
 

 

 

  
//Matrix var g: TGPGraphics; img: TGPImage; tb: TGPTextureBrush; matrix: TGPMatrix; begin g := TGPGraphics.Create(Canvas.Handle); img := TGPImage.Create('c:\temp\x.jpg'); tb := TGPTextureBrush.Create(img); matrix := TGPMatrix.Create(75.0/640.0, 0.0, 0.0, 75.0/480.0, 0.0, 0.0); tb.SetTransform(matrix); g.FillEllipse(tb, 0, 0, Self.ClientWidth, Self.ClientHeight); matrix.Free; img.Free; tb.Free; g.Free; end;
//WrapMode var g : TGPGraphics; img: TGPImage; tb : TGPTextureBrush; p: TGPPen; begin g := TGPGraphics.Create(Canvas.Handle); img := TGPImage.Create('c:\temp\small.jpg'); tb := TGPTextureBrush.Create(img); p := TGPPen.Create(MakeColor(255, 0, 0, 0)); tb.SetWrapMode(WrapModeTile); g.FillRectangle(tb, MakeRect(0, 0, 200, 200)); g.DrawRectangle(p, MakeRect(0, 0, 200, 200)); tb.SetWrapMode(WrapModeTileFlipX); g.FillRectangle(tb, MakeRect(200, 0, 200, 200)); g.DrawRectangle(p, MakeRect(200, 0, 200, 200)); tb.SetWrapMode(WrapModeTileFlipY); g.FillRectangle(tb, MakeRect(0, 200, 200, 200)); g.DrawRectangle(p, MakeRect(0, 200, 200, 200)); tb.SetWrapMode(WrapModeTileFlipXY); g.FillRectangle(tb, MakeRect(200, 200, 200, 200)); g.DrawRectangle(p, MakeRect(200, 200, 200, 200)); img.Free; tb.Free; p.Free; g.Free; end;
WrapMode 选项:

Delphi 微软 说明
WrapModeClamp Clamp 纹理或渐变没有平铺。
WrapModeTile Tile 平铺渐变或纹理。
WrapModeTileFlipX TileFlipX 水平反转纹理或渐变,然后平铺该纹理或渐变。
WrapModeTileFlipXY  TileFlipXY  水平和垂直反转纹理或渐变,然后平铺该纹理或渐变。
WrapModeTileFlipY TileFlipY 垂直反转纹理或渐变,然后平铺该纹理或渐变。


本文转载自:http://www.cnblogs.com/del/archive/2007/12/27/1017177.html

共有 人打赏支持
涂孟超
粉丝 12
博文 2004
码字总数 14107
作品 0
深圳
程序员
【Visual C++】游戏开发笔记之四——游戏画面绘图(一)基本图形绘制

本系列文章由zhmxy555编写,转载请注明出处。 http://blog.csdn.net/zhmxy555/article/details/7333886 作者:毛星云 邮箱: happylifemxy@qq.com 欢迎邮件交流编程心得 从本篇文章开始笔锋一...

长平狐 ⋅ 2012/11/12 ⋅ 0

关于cocos2d-x几种画图方法的用法与思考

CCRenderTexture 自己的理解 CCRenderTexture类似一张空白的“画布“,用户通过自定义笔刷(CCSprite*),在touch事件中把笔刷的移动痕迹“记录”起来,从而“画”出各种艺术效果。记录方法很简...

于赟 ⋅ 2012/11/18 ⋅ 0

Genesis-3D新手入门——11.地形系统

地形系统 这是一个地形系统的实例,根据Genesis-3D参考手册中地形指南,创建出一个简单的Demo,帮助用户来了解地形系统的使用。 1.创建地形。 (1)点击菜单"工具"-->"地形"-->"新建地形"打开...

lengche ⋅ 2014/02/20 ⋅ 0

Genesis-3D新手入门——11.地形系统

地形系统 这是一个地形系统的实例,根据Genesis-3D参考手册中地形指南,创建出一个简单的Demo,帮助用户来了解地形系统的使用。 1.创建地形。 (1)点击菜单"工具"-->"地形"-->"新建地形"打开...

lengche ⋅ 2013/12/23 ⋅ 0

第二章 2绘制线条简单图形

线条和形状 同Windows其它版本相比,Windows CE提供相当少的功能的领域之一就是基本线条绘制和形状绘制功能。用来创建复杂环形的Chord, Arc, 和Pie函数被去掉了。大部分使用"当前点[current ...

技术小胖子 ⋅ 2017/11/08 ⋅ 0

内存泄露整理

对开发中常见的内存泄露,GDI泄露进行检测 一、GDI泄露检测方法: 在软件测试阶段,可以通过procexp.exe 工具,或是通过任务管理器中选择GDI对象来查看软件GDI的对象是使用情况。 注意点:C...

youcry ⋅ 2012/07/07 ⋅ 0

【Qt笔记】画刷和画笔

前面一章我们提到,Qt 绘图系统定义了两个绘制时使用的关键属性:画刷和画笔。前者使用描述,大多用于填充;后者使用描述,大多用于绘制轮廓线。 定义了的填充模式,具有样式、颜色、渐变以及...

大道无名 ⋅ 2016/07/30 ⋅ 0

常用的GDI+ 函数使用例子

一、通过Gdi+加载和显示PNG,JPG等格式的图片 //直接加载外部的图像 Image* image = new Image(L"test.png");//如果需要通过ID 来加载的话 BOOL CSmalltmpdemoDlg::ImageFromIDResource(UIN...

junwong ⋅ 2012/03/23 ⋅ 0

窗体操作:CBrush类

CBrush画刷定义了一种位图形式的像素,利用它可对区域内部填充颜色。 该类封装了Windows的图形设备接口(GDI)刷子。通过该类构造的CBrush对象可以传递给任何一个需要画刷的CDC成员函数。该画刷...

野渡书生 ⋅ 2016/03/11 ⋅ 0

如何对mfc窗体背景图片的设置

打开vc+的mfc工程,先载入一张图片,ID为IDB_BITMAP2 TestDlg.h中: CBrush m_brBk;//在public中定义 TestDlg.cpp中: 在初始化函数OnInitDialog()中加入: BOOL CTestDlg::OnInitDialog() { C...

crossmix ⋅ 2015/10/07 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Netweaver和SAP云平台的quota管理

Netweaver 以需要为一个用户上下文(User Context)能够在SAP extended memory区域中分配内存尺寸创建quota为例。 对于Dialog工作进程,使用事务码修改参数 ztta/roll_extension_dia. 对于非D...

JerryWang_SAP ⋅ 5分钟前 ⋅ 0

IDEA提示编码速度

焦点移动 将焦点冲代码编辑窗口移动到菜单栏:Alt+菜单栏带下划线字母 将焦点从工具窗口移动到代码编辑窗口 Esc或Shift+Esc 将焦点从代码编辑移动到最近使用的工具窗口 F12 模板提示 Ctrl+J...

bithup ⋅ 14分钟前 ⋅ 0

180623-SpringBoot之logback配置文件

SpringBoot配置logback 项目的日志配置属于比较常见的case了,之前接触和使用的都是Spring结合xml的方式,引入几个依赖,然后写个 logback.xml 配置文件即可,那么在SpringBoot中可以怎么做?...

小灰灰Blog ⋅ 38分钟前 ⋅ 0

冒泡排序

原理:比较两个相邻的元素,将值大的元素交换至右端。 思路:依次比较相邻的两个数,将小数放在前面,大数放在后面。即在第一趟:首先比较第1个和第2个数,将小数放前,大数放后。然后比较第...

人觉非常君 ⋅ 45分钟前 ⋅ 0

Vagrant setup

安装软件 brew cask install virtualboxbrew cask install vagrant 创建project mkdir -p mst/vmcd mst/vmvagrant init hashicorp/precise64vagrant up hashicorp/precise64是一个box......

遥借东风 ⋅ 今天 ⋅ 0

python3.6 安装pyhook_3

我的是在win下的,忙了半天老是安装不了, pip install 也不行。 那么可以看出自己的版本是32bit 一脸懵逼 没办法 只好下载32版本的来安装 我一直以为 是 对应32 位的 。 下面是 小例子 http...

之渊 ⋅ 今天 ⋅ 0

004、location正则表达式

1、location的作用 location指令的作用是根据用户请求的URI来执行不同的应用,也就是根据用户请求的网站URL进行匹配,匹配成功即进行相关的操作。 2、location的语法 = 开头表示精确匹配 ^~...

北岩 ⋅ 今天 ⋅ 0

CentOS7 静默安装 Oracle 12c

环境 CentOS7.5 最小安装 数据库软件 linuxx64_12201_database.zip 操作系统配置 关闭 SELinux sed -i '/^SELINUX=/cSELINUX=disabled' /etc/selinux/config 关闭防火墙 systemctl disable ......

Colben ⋅ 今天 ⋅ 0

Yii2中findAll()的正确使用姿势/返回为空的处理办法

从一次错误的操作开始 $buildingObject = Building::findAll("status=1"); 1 这个调用看着没有任何毛病,但是在使用时返回的结果却是一个空数组。再回过头来看看数据表中: 按照套路来讲,查...

dragon_tech ⋅ 今天 ⋅ 0

如何优雅的编程——C语言界面的一点小建议

我们鼓励在编程时应有清晰的哲学思维,而不是给予硬性规则。我并不希望你们能认可所有的东西,因为它们只是观点,观点会随着时间的变化而变化。可是,如果不是直到现在把它们写在纸上,长久以...

柳猫 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部