var srcHdc = CreateCompatibleDC(hdc);
Это создает контекст устройства памяти.Это правильный первый шаг.Но память постоянного тока еще не готова.Также требуется растровое изображение памяти.
SelectObject(hdc, pen);
Polyline(hdc, points, points.Length);
Это будет отображаться в контексте устройства Windows.Но мы хотим нарисовать контекст устройства памяти, а затем нарисовать память в HDC
, используя AlphaBlend
См. Пример ниже:
int w = 100;
int h = 100;
//create memory device context
var memdc = CreateCompatibleDC(hdc);
//create bitmap
var hbitmap = CreateCompatibleBitmap(hdc, w, h);
//select bitmap in to memory device context
var holdbmp = SelectObject(memdc, hbitmap);
//begine drawing:
var hpen = CreatePen(0, 4, 255);
var holdpen = SelectObject(memdc, hpen);
Rectangle(memdc, 10, 10, 90, 90);
//draw memory device (memdc) context on to windows device context (hdc)
AlphaBlend(hdc, 0, 0, w, h, memdc, 0, 0, w, h, new BLENDFUNCTION(0, 0, 128, 0));
//clean up:
SelectObject(memdc, holdbmp);
SelectObject(memdc, holdpen);
DeleteObject(hbitmap);
DeleteObject(hpen);
DeleteDC(memdc);