Форум — Ответы     (  К темам )
 ?  Dr.Phoenix: Есть стандартный Zoom в мастдае? (24-12-2002 19:53:33)
надо сделать zoom в проге, причем так, чтоб тормозил не так сильно, как мой самописный, а лучше, чтоб ваще не тормозил. Как его лучше реализовать?
 Георгий (28-12-2002 01:13:52)
а нельзя ли по подробнее: что за зум ("распахование" окна, изменение масштаба графика и т.п.)?
 Dr.Phoenix (28-12-2002 13:43:01)
Ну Zoom! Самый простой Zoom! Т.е. задача такая: при наведении мышы на картинку, в окошке пониже должна показваться увеличенная картинка. Если делать так, как я делаю (смотрю на цвет пиксела, а потом в окне рисую уже не пиксель, а прямоугольник), то все чудненько работает, тока при увеличении размера увиличиваемой области все начинает заметно тормозить (намного заметнее, чем сейчас при 50*50 точек). Вот и хотелось бы знать, как делать, чтоб не было тормозов.
Если знаете, ответьте, плз!
 Devnvd (29-12-2002 02:32:01)
Рисовать картинку лучше в TPaintBox.
5-ти кратное увеличение окошка 21x21 в окно 105x105.
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
Application->OnMessage= AppMessage;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::AppMessage(tagMSG &Msg, bool &Handled)
{
if(Msg.message==WM_MOUSEMOVE)
{
TPoint p=Mouse->CursorPos; //Получим экранные координаты курсора
HDC hdcFrom=GetDC(0); //Контекст экрана
StretchBlt(PaintBox2->Canvas->Handle,0,0,PaintBox2->Width,PaintBox2->Height,
hdcFrom,p.x-10,p.y-10,21,21,SRCCOPY);
ReleaseDC(0,hdcFrom);
}
}
Если вы нажмёте левую кнопку мыши в области формы и не отпуская её поведёте мышь по экрану, то вы сможете рассмотреть в увеличенном виде любой участок экрана.