Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.05.2013, 10:08   #1
tank2009
 
Регистрация: 22.06.2011
Сообщений: 4
По умолчанию Перемещение и масштабирование рисунка в окне!!!

Здравствуйте!!!
Извините за беспокойства но вы последняя для меня надежда!!!
Изучаю сам, с нуля
Никак не могу разобраться с заданием!!!

Перемещение (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;

Если можно подскажите что нибуть!!!

Последний раз редактировалось Stilet; 08.05.2013 в 12:05.
tank2009 вне форума Ответить с цитированием
Старый 08.05.2013, 17:37   #2
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

1. Ну, вообще-то с контекстом устройства работать принято в сообщении перерисовки, а не в первом попавшемся.
2. Зачем Вам два одинаковых DC?
s-andriano вне форума Ответить с цитированием
Старый 14.05.2013, 23:20   #3
tank2009
 
Регистрация: 22.06.2011
Сообщений: 4
По умолчанию

Да 2 DC это лишнее!!!!!!!!
Почему в первом попавшемся
мне веть нужно отслеживать одновременно 2 клавиши и колесика мыши
но это неважно
у меня функции работают некорректно!!!!!!!!!!!!!
tank2009 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Масштабирование и перемещение компонентов Dennis777 Общие вопросы Delphi 13 28.02.2013 21:30
Корректное масштабирование рисунка devi409 Мультимедиа в Delphi 16 12.06.2012 21:54
Масштабирование рисунка при растягивание формы. KOPC1886 C# (си шарп) 1 24.04.2011 00:40
Масштабирование рисунка в Word c помощью VBA Vavo Microsoft Office Word 4 13.12.2009 19:52
Перемещение рисунка по траектории Noob333 Помощь студентам 1 28.04.2009 10:42