Масштабирование
От: sapphire_d  
Дата: 03.06.03 08:23
Оценка:
Всем привет!

У меня простой вопрос, тоько что-то у самого не выходит.

У меня в проге строятся графики. Как сделать масштабирование относительно разрешения экрана? Т.е. у меня есть окно, которое я задаю определенного неизменяющегося размера, и я хочу чтобы мое окно представляло собой прямоугольник размера 100 на 50 (например) в условных единицах. Может быть я не прав в своем подходе, подскажите, плз! Мне необходимо, чтобы при любом разрешении: 800*600, 1024*768, ... мои графики занимали все рабочее пространство.

Заранее всем спасибо!
Re: Масштабирование
От: free stranger Россия  
Дата: 03.06.03 08:40
Оценка: 1 (1)
Здравствуйте, sapphire_d, Вы писали:

_>Всем привет!


_>У меня простой вопрос, тоько что-то у самого не выходит.


_>У меня в проге строятся графики. Как сделать масштабирование относительно разрешения экрана? Т.е. у меня есть окно, которое я задаю определенного неизменяющегося размера, и я хочу чтобы мое окно представляло собой прямоугольник размера 100 на 50 (например) в условных единицах. Может быть я не прав в своем подходе, подскажите, плз! Мне необходимо, чтобы при любом разрешении: 800*600, 1024*768, ... мои графики занимали все рабочее пространство.


_>Заранее всем спасибо!


Рисуй в контексте памяти, а потом переноси его с помощью StretchBlt на нужный DC. Он сам всё отмасштабирует
С регардами
The darkness around me
Shores of solar sea
Oh how i wish to go down with the sun....
Re: Масштабирование
От: Анатолий Широков СССР  
Дата: 03.06.03 08:42
Оценка: 3 (1)
Что-то в этом роде:

void ondraw(HWND hwnd, HDC hdc, PAINTSTRUCT *)
{
   RECT r;
   GetClientRect(hwnd, r);

   SetMapMode(hdc, MM_ANISOTROPIC);
   SetWindowExtEx(hdc, 100, 50, 0); 
   // направляем ось Y "вверх"
   SetViewportExtEx(hdc, r.right, -r.bottom, 0); 

   // еще можно видовую систему координат перенести в центр клиентской области окна   
   SetViewportOrgEx(hdc, r.right >> 1, r.bottom >> 1, 0);

   // TODO: рисование графика
}
Re[2]: Масштабирование
От: sapphire_d  
Дата: 03.06.03 09:01
Оценка:
Здравствуйте, free stranger, Вы писали:


FS>Рисуй в контексте памяти, а потом переноси его с помощью StretchBlt на нужный DC. Он сам всё отмасштабирует :)

FS>С регардами

Спасибо за столь быстрый ответ! Сегодня вечеором попробую! :)
Re[2]: Масштабирование
От: sapphire_d  
Дата: 03.06.03 09:02
Оценка:
Здравствуйте, Анатолий Широков, Вы писали:

АШ>Что-то в этом роде:


АШ>
АШ>void ondraw(HWND hwnd, HDC hdc, PAINTSTRUCT *)
АШ>{
АШ>   RECT r;
АШ>   GetClientRect(hwnd, r);

АШ>   SetMapMode(hdc, MM_ANISOTROPIC);
АШ>   SetWindowExtEx(hdc, 100, 50, 0); 
АШ>   // направляем ось Y "вверх"
АШ>   SetViewportExtEx(hdc, r.right, -r.bottom, 0); 

АШ>   // еще можно видовую систему координат перенести в центр клиентской области окна   
АШ>   SetViewportOrgEx(hdc, r.right >> 1, r.bottom >> 1, 0);

АШ>   // TODO: рисование графика
АШ>}
АШ>


огромное спасибо! Буду пробовать!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.