Skalowanie MM_ANISOTROPIC i rozmiar czcionki

Odpowiedz Nowy wątek
2011-07-25 09:11
albi
0

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;
edytowany 1x, ostatnio: madmike, 2016-12-13 18:26

Pozostało 580 znaków

2011-07-26 07:59
albi
0

Znalazłem odpowiedź. Może komuś się przyda. Należy ustawić czcionkę typu TrueType.

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0