AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia TLine - Canvas an Line ausrichten
Thema durchsuchen
Ansicht
Themen-Optionen

TLine - Canvas an Line ausrichten

Ein Thema von Bjoerk · begonnen am 6. Mär 2013 · letzter Beitrag vom 9. Mär 2013
 
Bjoerk

Registriert seit: 28. Feb 2011
Ort: Mannheim
1.384 Beiträge
 
Delphi 10.4 Sydney
 
#1

TLine - Canvas an Line ausrichten

  Alt 6. Mär 2013, 17:52
Ich erstelle z.Z eine TLine Klasse (Shape).

Dabei habe Ich folgendes Problem: Damit die Line vollständig in das Canvas hineinpasst, muß man beim Zeichnen der Linie Offsets abziehen. Wenn man das aber tut, wird die Linie zwar schön dargestellt (Siehe Paint), aber sie stimmt nicht mehr, weder Start- noch Endpunkt. Man sieht auch, daß der Winkel falsch ist (Siehe Anlage).

Ich müßte die ganze Komponente andersrum aufziehen. Zwei Eckpunkte vorgeben und die Komponentengröße wird dann entsprechend berechnet (statt die Linie einzupassen). Es wäre auch schön, wenn das auch schon zur Designzeit so angezeigt werden könnte.

Da ich von Grafikprogrammierung nur wenig Ahnung habe, wolle ich mal fragen, wie könnte man denn so was machen? TLine ist z.Z. von TGraphicControl abgeleitet?

Edit: Crosspost vergessen

http://forum.delphi-treff.de/showthr...Sets-erstellen

Delphi-Quellcode:
function TLine.OffSet1: integer;
begin
  Result := FPen.Width div 2;
end;

function TLine.OffSet2: integer;
begin
  Result := OffSet1 + FPen.Width mod 2;
end;

procedure TLine.Paint;
var
  X1, Y1, X2, Y2: Integer;
begin
  with Canvas do
  begin
    Pen := FPen;
    X1 := 0;
    Y1 := 0;
    X2 := Width;
    Y2 := Height;
    if X2 < 0 then
    begin
      Dec(X1, OffSet2);
      Inc(X2, OffSet1);
    end
    else
    begin
      Inc(X1, OffSet1);
      Dec(X2, OffSet2);
    end;
    if Y2 < 0 then
    begin
      Dec(Y1, OffSet2);
      Inc(Y2, OffSet1);
    end
    else
    begin
      Inc(Y1, OffSet1);
      Dec(Y2, OffSet2);
    end;
    MoveTo(X1, Y1);
    LineTo(X2, Y2);
  end;
end;
Zum besseren Verständnis hab ich einem Image die korrekte Line mal gezeichnet.
Angehängte Dateien
Dateityp: pdf TLine.pdf (62,3 KB, 28x aufgerufen)

Geändert von Bjoerk ( 6. Mär 2013 um 17:55 Uhr)
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:50 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz