利用TextureBrush时的图像偏移问题。

原创 2006年05月28日 11:11:00

最近使用GDI+中的TextureBrush ,但是在FillRectangle時,圖像總是出現偏移問題,例如下圖:

原始圖片應該為:

下面是我的源代碼,我將一步一步的分析出現這個問題的原因及解決方法。

    Image logo = Image.FromFile( " Your Picture Path" );
   TextureBrush br = new TextureBrush( logo );
   Graphics g = this.CreateGraphics();
   g.FillRectangle( br , 22 , 29 , 20 , 20 );

原因就在於g.FillRectangle( br , 22 , 29 , 20 , 20 ); 中的22 ,29 。原來我認為22 ,29 隻是來確定你要顯示的圖片在form中的相對位置( x ,y ),但是用TextureBrush時(22 ,29) ,不僅是確定位置的,而且還決定了圖片的偏移大小 ,你如果把其換成其它的數,那麼圖片的偏移還會變的。把g.FillRectangle( br , 22 , 29 , 20 , 20 ); 改成g.FillRectangle( br , 0 , 0 , 20 , 20 ); ,圖像顯示正常,但是其位置確是(0 , 0),所以這也驗証了我上述的猜想是正確的。

解決方法:

Image logo = Image.FromFile( "D://EPON_EMS//image//green.png" );
   TextureBrush br = new TextureBrush( logo );
   br.TranslateTransform( 22 , 29 );
   Graphics g = LIU1.CreateGraphics();
   g.FillRectangle( br , 22 , 29 , 20 , 20 );

加上一句br.TranslateTransform( 22 , 29 );就OK了,TranslateTransform是把原始圖像的起始位置進行偏移,這樣我們就相當於先將它偏移,然後在FillRectangle中又將它偏移了過來,這樣簡單的達到了我們的目的。

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

GDI+学习记录(11)- 纹理画刷 TextureBrush的基本使用

纹理画刷(TextureBrush)实际上就是将图片在目标区域进行平铺,同影线画刷(HatchBrush)类似,纹理画刷也是使用同样的基本图案在水平方向和垂直方向上进行一定顺序排列之后构成的画刷。不同...

罗聪 OpCode教程 笔记三

Prefixes! http://www.luocong.com/learningopcode/doc/3._Prefixes_-_Part_I.htm   OpCode         ...
  • cay22
  • cay22
  • 2012-04-02 22:15
  • 1588

C++编译期间的虚函数调用机制

C++编译期间的虚函数调用机制
  • cay22
  • cay22
  • 2010-11-25 21:11
  • 1138

罗聪 OpCode教程 笔记一

http://www.luocong.com/learningopcode/doc/1._什么是OpCode?.htm   OpCode就是Operation Code,意即操作码的意思, 就是0...
  • cay22
  • cay22
  • 2012-03-31 11:24
  • 2002

XML序列化数据对象(三)

XML序列化数据对象(三) --- 实现 一. 实现界面 1.1 大致界面 图1 1.2 类类型 图2 1.3 变量输入 图3 二. 使用步骤 2.1 添加一些类 ...
  • cay22
  • cay22
  • 2013-07-27 10:43
  • 1106

C# WinForm 解决TextureBrush,FillRectangle绘图偏移问题

FillRectangle方法 最近在开发WinForm软件中遇到使用FillRectangle方法窗体绘制园角图象的时候总是发生偏移错位问题,使我头疼了半天,其现象如下: WinForm 解...

OpenCV2 图像旋转偏移问题

cocos2dx shader实现灰度图android后台切换回来导致图像偏移的问题

原文链接(http://www.cnblogs.com/yeshanghai/p/cocos2dx_shader.html?utm_source=tuicool) 项目中经常会遇到将...

Proteus 仿真8086时 汇编程序里面有DATA SEGMENT时 CS 在load时会偏移的问题

Proteus 仿真8086时 汇编程序里面有DATA SEGMENT时 CS 在load时会偏移的问题 对于 类似于把 DATA SEGMENT写CODE外面时 DATA SEGMENT OU...

iOS7之后,关于NavigationBar存在时,UIScrollView内容发生偏移的问题

⭐️最近才遇到的坑,我很纳闷之前为毛没发现: 在使用NavigationBar的ViewController中,navigationbar的下方,添加了一个UIScrollView,类似于网易新闻,...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)