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

С регардами
Что-то в этом роде:
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: рисование графика
}
Здравствуйте, Анатолий Широков, Вы писали:
АШ>Что-то в этом роде:
АШ>АШ>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: рисование графика
АШ>}
АШ>
огромное спасибо! Буду пробовать!