Хелп!! I can't understend .. %/
HDC dcview = CreateCompatibleDC(dc);
int ox=GetDeviceCaps(dc, HORZRES);
int oy=GetDeviceCaps(dc, VERTRES);
HBITMAP bimg = CreateCompatibleBitmap(dc,ox,oy);
DeleteObject(SelectObject(dcview, bimg));
BitBlt(dcview, 0 , 0, ox,oy, dc, 0, 0, SRCCOPY);
ReleaseDC(NULL, dc);
HWND hw = imgRis->Canvas->Handle;
HDC dcnew = GetDC(hw);
SetStretchBltMode(dcnew, HALFTONE);
BitBlt(dcnew, 0 , 0, ox,oy, dcview, 0, 0, SRCCOPY);
ReleaseDC(hw,dcnew);
DeleteObject(bimg);
DeleteDC(dcnew);
Запускаю вот это - и на image вместо скриншота моего эрана - просто белый фон, хотя тот же самый код прекрасно работает в VC++ , да и в Delphi я с handle'ом image'а так работал без проблем - а в Builder'е не срабатывает... ???
HWND hw = imgRis->Canvas->Handle;
Handle Canvas'а и есть HDC, а вовсе не HWND. Так что вызывать для него GetDC бессмысленно.
Цитата:
Originally posted by fellow
К сожалению, не могу опробовать код, т.к. билдера нет под рукой. Но так, чисто на первый взгляд, сомнения вызывает строчка:
HWND hw = imgRis->Canvas->Handle;
Handle Canvas'а и есть HDC, а вовсе не HWND. Так что вызывать для него GetDC бессмысленно.
К сожалению, не могу опробовать код, т.к. билдера нет под рукой. Но так, чисто на первый взгляд, сомнения вызывает строчка:
HWND hw = imgRis->Canvas->Handle;
Handle Canvas'а и есть HDC, а вовсе не HWND. Так что вызывать для него GetDC бессмысленно.
...а ведь и правда.....счас попробую....
....спасибки огромные.....
....и чего это меня повело HWND получать...
....делал подобное в делфи, а здесь стормозил ...
так что примного благодарен =))