利用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)类似,纹理画刷也是使用同样的基本图案在水平方向和垂直方向上进行一定顺序排列之后构成的画刷。不同...

GDI+学习记录之纹理画刷TextureBrush

TextureBrush(IN Image* image,IN WrapMode wrapMode,IN const RectF &dstRect)为纹理画刷的构造函数 image:纹理对象指针 Wr...

GDI+ for VCL基础 -- 画刷之TextureBrush

         本文为GDI+ for VCL基础系列文章之一,主要供GDI+初学者入门参考,例子使用GDI+版本下载地址和说明见《GDI+ for VCL基础 -- GDI+ 与 VCL》。如有错...
  • maozefa
  • maozefa
  • 2007年12月14日 00:18
  • 5279

解决System.Drawing.TextureBrush..ctor BackGroundImage 内存溢出错误

at System.Drawing.TextureBrush..ctor(Image image, WrapMode wrapMode) at System.Windows.Forms.Control...
  • zanfeng
  • zanfeng
  • 2017年01月10日 00:09
  • 778

GDI+学习及代码总结之------画刷Brush

画刷Brush GDI+中定义了五种画刷类型,他们都派生于Brush类,他们分别是: 注意:画刷与画笔不同,画刷只是用来填充区域,所以,画刷无宽度、长度可言。 单色画刷SolidBr...

GDI+学习及代码总结之------画刷Brush .

画刷Brush GDI+中定义了五种画刷类型,他们都派生于Brush类,他们分别是: 注意:画刷与画笔不同,画刷只是用来填充区域,所以,画刷无宽度、长度可言。 单色画...

GDI+缩放图片方法小结(转)

GDI+缩放图片的方法

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

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

OpenCV2 图像旋转偏移问题

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

原文链接(http://www.cnblogs.com/yeshanghai/p/cocos2dx_shader.html?utm_source=tuicool) 项目中经常会遇到将...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:利用TextureBrush时的图像偏移问题。
举报原因:
原因补充:

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