Witam,
Mam problem z implementacją zoom out z wykorzystaniem trybu MM_ANISOTROPIC. W aplikacji chciałbym stworzyć coś w rodzaju nawigatora czyli małego formularza, który będzię wyświetlał pomniejszony obraz projektu. Obraz projektu to obrazy kontrolek tekstowych, ktore leżą na TPanelach i są połączone strzałkami rysowanymi na Canvasach tychże. Funkcja, która odrysowuje taki obraz na zadanym Canvas to GProject.PaintToCanvas. Problem jest taki, że w odrysowanej na nawigatorze miniaturce nie jest skalowana czcionka - rozmiar pozostaje taki sam czyli jest za duży. Efekt jest taki, że napisy nie mieszczą się i są obcinane. Na próbę zrobiłem powiększanie i wtedy wszystko jest rysowane jak należy. Czcionki też. czy ktoś z forumowiczów może wie jak to poprawić? W ostateczności pozostaje rysowanie na bitmapie i wyświetlanie przez StretchBlt. Jakoś działa ale niezbyt pięknie to wygląda. Dołączam kod OnPaint formularza.
procedure TNavigatorForm.FormPaint(Sender: TObject);
var
lhdc: HDC;
begin
if GProject <> nil then
begin
lhdc := SaveDC(Canvas.Handle);
SetMapMode(Canvas.Handle, MM_ANISOTROPIC);
SetWindowExtEx(Canvas.Handle, 2, 2, nil);
SetViewPortExtEx(Canvas.Handle, 1, 1, nil);
GProject.PaintToCanvas(Canvas);
RestoreDC(Canvas.Handle, lhdc);
end;
end;