Einzelnen Beitrag anzeigen

loirad

Registriert seit: 25. Nov 2009
135 Beiträge
 
Delphi 6 Professional
 
#8

AW: Linien auf Canvas unterschiedlich breit dargestellt?

  Alt 5. Okt 2012, 13:38
Ich pack mal n Stückchen vom originalen Quelltext ran:

Delphi-Quellcode:
breite1:=round((Bild1.Picture.Bitmap.Width*Bild1.Picture.Bitmap.Height)*2*0.0000001)+5;
breite2:=round((Bild2.Picture.Bitmap.Width*Bild2.Picture.Bitmap.Height)*2*0.0000001)+5;
  if x1<x2 then
   begin
    for i:=(x2-x1) to ((x2-x1)+breite2) do
     begin
      Bild2.Picture.Bitmap.Canvas.MoveTo(i,0);
      Bild2.Picture.Bitmap.Canvas.LineTo(i,Bild2.Picture.Bitmap.Height);
     end;
   end;
  if x1>x2 then
   begin
    for i:=(x1-x2) to ((x1-x2)+breite1) do
     begin
      Bild1.Picture.Bitmap.Canvas.MoveTo(i,0);
      Bild1.Picture.Bitmap.Canvas.LineTo(i,Bild1.Picture.Bitmap.Height);
     end;
   end;
  if Bild1.Picture.Bitmap.Width-x1<Bild2.Picture.Bitmap.Width-x2 then
   begin
    for i:=(x2+(Bild1.Picture.Bitmap.Width-x1)) to ((x2+(Bild1.Picture.Bitmap.Width-x1))+breite2) do
     begin
      Bild2.Picture.Bitmap.Canvas.MoveTo(i,0);
      Bild2.Picture.Bitmap.Canvas.LineTo(i,Bild2.Picture.Bitmap.Height);
     end;
   end;
  if Bild1.Picture.Bitmap.Width-x1>Bild2.Picture.Bitmap.Width-x2 then
   begin
    for i:=(x1+(Bild2.Picture.Bitmap.Width-x2)) to ((x1+(Bild2.Picture.Bitmap.Width-x2))+breite1) do
     begin
      Bild1.Picture.Bitmap.Canvas.MoveTo(i,0);
      Bild1.Picture.Bitmap.Canvas.LineTo(i,Bild1.Picture.Bitmap.Height);
     end;
   end;


  if y1<y2 then
   begin
    for i:=(y2-y1) to (y2-y1+breite2) do
     begin
      Bild2.Picture.Bitmap.Canvas.MoveTo(0,i);
      Bild2.Picture.Bitmap.Canvas.LineTo(Bild2.Picture.Bitmap.Width,i);
     end;
   end;
  if y1>y2 then
   begin
    for i:=(y1-y2) to (y1-y2+breite1) do
     begin
      Bild1.Picture.Bitmap.Canvas.MoveTo(0,i);
      Bild1.Picture.Bitmap.Canvas.LineTo(Bild1.Picture.Bitmap.Width,i);
     end;
   end;
  if Bild1.Picture.Bitmap.Height-y1<Bild2.Picture.Bitmap.Height-y2 then
   begin
    for i:=(y2+(Bild1.Picture.Bitmap.Height-y1)) to ((y2+(Bild1.Picture.Bitmap.Height-y1))+breite2) do
     begin
      Bild2.Picture.Bitmap.Canvas.MoveTo(0,i);
      Bild2.Picture.Bitmap.Canvas.LineTo(Bild2.Picture.Bitmap.Width,i);
     end;
   end;
  if Bild1.Picture.Bitmap.Height-y1>Bild2.Picture.Bitmap.Height-y2 then
   begin
    for i:=(y1+(Bild2.Picture.Bitmap.Height-y2)) to ((y1+(Bild2.Picture.Bitmap.Height-y2))+breite1) do
     begin
      Bild1.Picture.Bitmap.Canvas.MoveTo(0,i);
      Bild1.Picture.Bitmap.Canvas.LineTo(Bild1.Picture.Bitmap.Width,i);
     end;
   end;
x1,x2,y1,y2 sind die Koordinaten von 2 Punkten (jeweils einer in einem Bild).
Und dann soll von diesen Punkten aus in alle 4 Richtungen der kleinste Abstand zur Wand gemessen werden und diese Wand in das größere Bild als Strich gemalt werden.
Wer Fehler findet darf sie behalten!
  Mit Zitat antworten Zitat