T
tank2009
Здравствуйте!!!
Извините за беспокойства но вы последняя для меня надежда!!!
Изучаю сам, с нуля
Никак не могу разобраться с заданием!!!
Перемещение (Pan) и масштабирование (Zoom) рисунка с помощью колесика мыши (Pan - Wheel и Shift+Wheel, Zoom - Ctrl+Wheel и Ctrl+Shift+Wheel).
Если с клавишами разобрался то Перемещение и масштабирование ну никак не получается!!!
Вот код!!!
case WM_MOUSEWHEEL:
wmId = LOWORD(wParam);
shag = HIWORD(wParam);
hdc=GetDC(hWnd);
hdcWin = GetDC(hWnd);
hdcScaled = CreateCompatibleDC(hdc);//новое контекстное устройства
bm = CreateCompatibleBitmap(hdc,xmax,ymax);
SelectObject(hdcScaled, bm);
switch (wmId){
case 8:
StretchBlt(hdcScaled,xn+5, yn+5, xk-5, yk-5,
hdcvirt,0,0,xmax,ymax,
SRCCOPY);
BitBlt(hdcWin,0,0,xk,yk,
hdcScaled,xn+5,yn+5,
SRCCOPY);
xk=xk-5;yk=yk-5;
xn=xn+5;yn=yn+5;
break;
case 12:
StretchBlt(hdcScaled,xn-5, yn-5, xk+5, yk+5,
hdcvirt,0,0,xmax,ymax,
SRCCOPY);
BitBlt(hdcWin,0,0,xmax,ymax,
hdcScaled,xn-5,yn-5,
SRCCOPY);
xk=xk+5;yk=yk+5;
xn=xn-5;yn=yn-5;
break;
case 4:
StretchBlt(hdcScaled,xn+5, yn, xk+5, yk,
hdcvirt,xn,yn,xk, yk,
SRCCOPY);
BitBlt(hdcWin,0,0,xk+5,yk,
hdcScaled,xn+5,yn,
SRCCOPY);
xk=xk+5;yk=yk;
xn=xn+5;yn=yn;
break;
default:
StretchBlt(hdcScaled,xn-5, yn, xk-5, yk,
hdcvirt,xn,yn,xk, yk,
SRCCOPY);
BitBlt(hdcWin,0,0,xk-5,yk,
hdcScaled,xn-5,yn,
SRCCOPY);
xk=xk-5;yk=yk;
xn=xn-5;yn=yn; }
DeleteDC(hdcScaled);
DeleteDC(hdctank);
ReleaseDC(hWnd, hdc);
ReleaseDC(hWnd, hdcWin);
break;
Если можно подскажите что нибуть!!!
Извините за беспокойства но вы последняя для меня надежда!!!
Изучаю сам, с нуля
Никак не могу разобраться с заданием!!!
Перемещение (Pan) и масштабирование (Zoom) рисунка с помощью колесика мыши (Pan - Wheel и Shift+Wheel, Zoom - Ctrl+Wheel и Ctrl+Shift+Wheel).
Если с клавишами разобрался то Перемещение и масштабирование ну никак не получается!!!
Вот код!!!
case WM_MOUSEWHEEL:
wmId = LOWORD(wParam);
shag = HIWORD(wParam);
hdc=GetDC(hWnd);
hdcWin = GetDC(hWnd);
hdcScaled = CreateCompatibleDC(hdc);//новое контекстное устройства
bm = CreateCompatibleBitmap(hdc,xmax,ymax);
SelectObject(hdcScaled, bm);
switch (wmId){
case 8:
StretchBlt(hdcScaled,xn+5, yn+5, xk-5, yk-5,
hdcvirt,0,0,xmax,ymax,
SRCCOPY);
BitBlt(hdcWin,0,0,xk,yk,
hdcScaled,xn+5,yn+5,
SRCCOPY);
xk=xk-5;yk=yk-5;
xn=xn+5;yn=yn+5;
break;
case 12:
StretchBlt(hdcScaled,xn-5, yn-5, xk+5, yk+5,
hdcvirt,0,0,xmax,ymax,
SRCCOPY);
BitBlt(hdcWin,0,0,xmax,ymax,
hdcScaled,xn-5,yn-5,
SRCCOPY);
xk=xk+5;yk=yk+5;
xn=xn-5;yn=yn-5;
break;
case 4:
StretchBlt(hdcScaled,xn+5, yn, xk+5, yk,
hdcvirt,xn,yn,xk, yk,
SRCCOPY);
BitBlt(hdcWin,0,0,xk+5,yk,
hdcScaled,xn+5,yn,
SRCCOPY);
xk=xk+5;yk=yk;
xn=xn+5;yn=yn;
break;
default:
StretchBlt(hdcScaled,xn-5, yn, xk-5, yk,
hdcvirt,xn,yn,xk, yk,
SRCCOPY);
BitBlt(hdcWin,0,0,xk-5,yk,
hdcScaled,xn-5,yn,
SRCCOPY);
xk=xk-5;yk=yk;
xn=xn-5;yn=yn; }
DeleteDC(hdcScaled);
DeleteDC(hdctank);
ReleaseDC(hWnd, hdc);
ReleaseDC(hWnd, hdcWin);
break;
Если можно подскажите что нибуть!!!