Блин, люди помогите понять бедному человеку заоблачную функцию винапи BitBtl.
Не понятно следующее:
1. Как копировать с битмапа в битмап этой функцией, или с битмапа на форму (пример).
2. Как брать контекст битмапа, что такое контекст, и можна ли его у бмп взять...
3. Как сдеать так, что б пред.(не перерисов. битмап) сохранялся, и перерис. на след. шаге (ну это функц. последнего параметра bitblt).
Короче, вот пример рабочий:
//------------------------------------------------
Graphics::TBitmap *Bitmap=new Graphics::TBitmap;
HDC DC=GetDC(0);
try{
Bitmap->Height=Screen->Height;
Bitmap->Width=Screen->Width;
BitBlt(Bitmap->Canvas->Handle , 0, 0, Screen->Width,
Screen->Height,DC, 0, 0, SRCCOPY);
}
//--------------------------------------------
реализует вывод на канву части принт скрина.
А теперь вопрос...как её переделать под функц. копирования на канву битмапа, что был описан выше.У меня не получается:
//--------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Graphics::TBitmap* bp = new Graphics::TBitmap;
bp->LoadFromFile("C:\\back.bmp");
HDC DC=GetDC(bp->Handle);//а так можна
HDC nDC=CreateCompatibleDC(DC);//чего это значит...
BitBlt(Form1->Canvas->Handle,0,0,100,100,DC,0,0,SRCCOPY);
delete bp;
//ReleaseDC(0,DC);
}
в общем, кто эту функцию понял, помогите, а то в нете нормального примера не нарыл. Буду признателен.