Canvas

0

Witam
Chciałem zamienić w canvasie układ współrzędnych na normalny.
Zastosowałem:

SetMapMode(Canvas.Handle, MM_LOMETRIC);
  SetViewPortorgEx(canvas.handle, clientwidth div 2,clientheight div 2,nil);

Wrzuciłem do Form.Create i niedziała.
Jaki jest tutaj błąd??

0

Błąd może polegać na tym, że w momencie wywoływania procedury Create dla formularza obiekt Canvas jeszcze nie jest dostępny (zostanie utworzony później). Teoretycznie więc powinno pomóc wywołanie w którejś z procedur: FormShow, FormActivate albo FormResize. Powinno, ale niestety również nie działa.

U mnie działa tylko, gdy wywołam te procedury bezpośrednio przed rysowaniem po Canvas-ie

procedure TForm1.Button1Click(Sender: TObject);
begin
  SetMapMode(Canvas.Handle, MM_LOMETRIC);
  SetViewPortOrgEx(Canvas.Handle, ClientWidth div 2, ClientHeight div 2, nil);
  Canvas.LineTo(100, 100);
end;

Jest to jakieś rozwiązanie, choć nie do końca zadowalające (dodatkowo linia jest trochę krótsza)

0

Dzieki właśnie tak zrobiłem i pomogło.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.