Как увеличить производительность по (Немасштабированному) DrawImage GDI?

В обработчике красок моего пользовательского элемента управления я выполняю итерации по набору предопределенных Растровых объектов и тяну их к клиентской области таким образом:

Версия C#:

private void Control_Paint(object sender, PaintEventArgs e) {
    Graphics g = e.Graphics;
    foreach (BitmapObj bmpObj in _bitmapObjCollection) {
        g.DrawImageUnscaled(bmpObj.Bitmap, bmpObj.Location);
    }
}

Версия VB.NET:

Private Sub Control_Paint(ByVal sender As Object, ByVal e As PaintEventArgs) Handles MyBase.Paint
    Dim g As Graphics = e.Graphics

    For Each bmpObj As BitmapObj In _bitmapObjCollection
        g.DrawImageUnscaled(bmpObj.Bitmap, bmpObj.Location)
    Next
End Sub

Код хорошо работает, но начинает срывать, когда приблизительно дюжина объектов добавляется к набору. Мой вопрос: существует ли способ ускорить это? Было бы возможно использовать функцию пересылки битовой строки Win32 для замены DrawImageUnscaled? И раз так как?

Спасибо!

Примечание: Поиск с помощью Google для useage BitBlt только привел ко мне образцы снимка экрана до сих пор...

5
задан Paul Sasik 6 April 2010 в 20:23
поделиться