|
위의 질문이 너무 방대해서 빌더 예제 소스를 보고 나름 대로 수정해 보고 했는데 잘 안되는 군요.
예제를 보고 아래 소스처럼 코딩을 해봤는데 256비트로 변환 되지않고 15b로 변환 되더라구요!
고수님들 보시고 조언 부탁드립니다. 초보라 힘이 드는 군요ㅠㅠㅠㅠㅠㅠ
void __fastcall TForm1::SB256_conversionClick(TObject *Sender)
{
TCanvas *tempCanvas = new TCanvas;
try
{
HWND hdc = Image;
TMyControl *pCtrl = (TMyControl *)Image;
// tempCanvas->Handle = pCtrl->GetDeviceContext(hdc);
tempCanvas->Handle = GetDeviceContext(hdc);
TImage *image2save = new TImage(Form1);
try
{
image2save->Height = Image->Picture->Height;
image2save->Width = Image->Picture->Width;
TRect destRect = Rect(0,0,pCtrl->Width,pCtrl->Height);
TRect sourceRect;
if (pCtrl->InheritsFrom(__classid(TWinControl)))
sourceRect = destRect;
else
sourceRect = pCtrl->BoundsRect;
image2save->Canvas->CopyRect(destRect, tempCanvas, sourceRect);
Image->Canvas->CopyRect(destRect,tempCanvas, sourceRect);
LogPal SysPal;
SysPal.lPal.palVersion = 0x300;
SysPal.lPal.palNumEntries = 256;
GetSystemPaletteEntries(Image,0,256,SysPal.lPal.palPalEntry);
image2save->Picture->Bitmap->Palette = CreatePalette(&(SysPal.lPal));
// image2save->Canvas->Draw(0,0,Image->Canvas);
if (SaveDialog1->Execute())
image2save->Picture->SaveToFile(SaveDialog1->FileName);
}
__finally
{
// delete image2save;
}
}
__finally
{
delete tempCanvas;
}
}
|