질문기존 픽셀 데이터 주위에 TCanvas를 래핑하는 방법은 무엇입니까?
비트 맵 이미지를 보유하는 32 비트 픽셀 데이터 배열이 있습니다.
TPixel = packed record
B: Byte;
G: Byte;
R: Byte;
A: Byte;
end;
Size = MyBitmapWidth * MyBitmapHeight;
MyBitmapData : array[0..Size-1] of TPixel;
새로운 TCanvas 개체를 만들어 기존 픽셀 데이터에 첨부 할 수 있습니까? 캔버스 객체에는 핸들이 할당되어야합니다.
배경
I는 (32 개 비트 픽셀들의 배열로), 비트 맵 데이터를 생성하는 타사 라이브러리를 사용하고 있습니다. TCanvas.Handle을 매개 변수로 사용하는 다른 함수에서 동일한 픽셀 데이터를 사용하고 싶습니다.
이 함수가'TCanvas.Handle'을 인수로 취하면 실제로는'TCanvas'가 필요하지 않습니다. 필요한 것은 Windows 장치 컨텍스트의 핸들 인 'HDC'입니다. –
나는 그것이 불가능한 이유를 설명하는 답을 쓰고 있지만 지금은있을 것이라고 생각합니다. 픽셀 버퍼에 대한 참조를 담고있는'HBitmap'을 생성 한 다음, DC (CreateCompatibleDC와 함께)를 생성하고 마지막으로 DC로 (SelectObject와 함께) 비트 맵을 선택할 수 있어야합니다. 내가 확신 할 수없는 유일한 부분은 첫 번째 부분이다. 'CreateDIBitmap' 또는'CreateDIBSection'이 원본 데이터에 대한 참조를 유지하는지 여부는 문서에서 알 수 없습니다. ('TCanvas'는 그 과정과 관련이 없지만, 정말로 필요할 경우'Handle : = hDC'를 할당하십시오.) –