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

最近使用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中又將它偏移了過來,這樣簡單的達到了我們的目的。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值