Форум — Ответы ( К темам )
? | 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); } } Если вы нажмёте левую кнопку мыши в области формы и не отпуская её поведёте мышь по экрану, то вы сможете рассмотреть в увеличенном виде любой участок экрана. |