小编pbh*_*bhd的帖子

当我释放画布时,DC会发生什么?

在这段代码中,我希望有一个调用ReleaseDC发生MyCanvas.Free,但这段代码运行正常,怎么样?
TCanvas自己的DC会发生什么?

var GlobalDC: THandle;

procedure TForm1.FormCreate(Sender: TObject);
begin
   GlobalDC:= GetDC(0);
end;

function LoopMeOften(const X, Y: Integer): TColor;
var
  MyCanvas: TCanvas;
begin
  MyCanvas := TCanvas.Create;
  MyCanvas.Handle := GlobalDC;
  Result := GetPixel(MyCanvas.Handle, X, Y);
  MyCanvas.Free;
end;
Run Code Online (Sandbox Code Playgroud)

delphi canvas device-context

4
推荐指数
1
解决办法
631
查看次数

如何创建每像素24位的内存DC?

我需要它使用GDI函数处理RGB24数据(特别是StretchBlt()非常快)我不能使用CreateCompatibleDC(),因为它只能用其他DC的颜色深度创建内存DC.通常它用于屏幕DC(通过传输NULL指针到功能),通常屏幕的颜色深度为32.此外我不能依赖它,'因为如果屏幕设置被更改,我的应用程序可能无法正常工作.

所以我需要一些方法来创建具有特定特定颜色深度的内存DC.到目前为止,我发现使用CreateDC()函数只有一种方法,但它需要许多特定于设备的参数,对我来说似乎有点不可靠.此外,有太多的字段需要填充适当的值来调用CreateDC().

是否有一些更简单的方法来创建特定的内存DC而不依赖于某些设备?或者即使创建24 bpp的内存DC?

PS我需要一些快速的图形.我已经尝试手动将alpha通道添加到位图以使用它兼容屏幕32bpp内存DC并且它已经解决了,但是太慢了.正如我上面所说,我不能依赖可以更改的屏幕设置.

c++ winapi gdi device-context

2
推荐指数
1
解决办法
1609
查看次数

Win32:如何从DC获取窗口(与GetDC相反)

有没有办法让窗口处理窗口拥有win32 DC?或者任何其他可能对识别窗口有用的信息,如DC宽度和高度?

winapi gdi device-context

1
推荐指数
1
解决办法
2173
查看次数

标签 统计

device-context ×3

gdi ×2

winapi ×2

c++ ×1

canvas ×1

delphi ×1