Я столкнулся со странной проблемой при использовании Graphics.DrawImage
.
При использовании e.Graphics.DrawImage(Image, Point)
в OnPaint
для рисования «буфера» растрового изображения на элементе управления, кажется, что части изображения опущены. Буфер заполняется вспомогательным методом, который рисует непосредственно на Bitmap
, используя построенный из него Graphics
. Когда элемент управления рисует, кэшированное растровое изображение рисуется на элементе управления.
Кажется, что ничего не пропущено в самом растровом изображении, потому что, когда я сохранил растровое изображение на диск и исследовал его, все это было там. (см. изображения ниже)
Вот как выглядит растровый буфер:
(источник: zachjohnson.net )
Это то, что появляется на контроле:
(источник: zachjohnson.net )
Это все, что я делаю в OnPaint
:
protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);
if (this.bufferInvalid)
{
this.UpdateBuffer();
}
if (this.buffer != null)
{
e.Graphics.DrawImage(this.buffer, Point.Empty);
}
}