从OnPaint中的e.ClipRectangle绘制

时间:2014-04-11 21:25:35

标签: vb.net winforms graphics

我故意打电话

Me.Invalidate(MyDesiredRepaintRectangle) 

在我的UserControl中。

在OnPaint事件中,我想从缓冲区位图绘制到e.Graphics:

Protected Overrides Sub OnPaint(e As PaintEventArgs)
  If Not _Buffer Is Nothing Then
    e.Graphics.DrawImage(_Buffer, e.ClipRectangle)
  End If
End Sub

但我在行

中做错了什么
e.Graphics.DrawImage(_Buffer, e.ClipRectangle)

......我想。目前整个_Buffer以拉伸方式绘制,以便它适合e.ClipRectangle。

_Buffer与usercontrol的大小相同。

我不确定如何在没有任何拉伸的情况下将所需部分绘制到e.Graphics上。

有人可以告诉我我做错了吗?

1 个答案:

答案 0 :(得分:0)

知道了:

    If Not _Buffer Is Nothing Then
        e.Graphics.DrawImage(_Buffer, e.ClipRectangle.X, e.ClipRectangle.Y, e.ClipRectangle, GraphicsUnit.Pixel)
    End If