Thema: Delphi Probleme mit Canvas

Einzelnen Beitrag anzeigen

crtl

Registriert seit: 3. Okt 2007
1 Beiträge
 
#1

Probleme mit Canvas

  Alt 3. Okt 2007, 22:21
Hallo, Ich habe Probleme mit der Canvas Funktion und würde mich freuen, wenn mir jemand einen Tipp geben könnte.
Delphi-Quellcode:
procedure TFormPalettierung.SpeedButtonZeichnenClick(Sender: TObject);
var Breite, Hoehe : Integer; c,v,p : Single;
begin

 Lv := StrToFloat (EditLaenge.Text);
 Bv := StrToFloat (EditBreite.Text);
 Hv := StrToFloat (EditHoehe.Text);


 repaint;


 if ComboBoxPalettenwahl.ItemIndex = 0 then Breite := 1200;
 if ComboBoxPalettenwahl.ItemIndex = 0 then Hoehe := 800;

 if ComboBoxPalettenwahl.ItemIndex = 1 then Breite := 1200;
 if ComboBoxPalettenwahl.Itemindex = 1 then Hoehe := 1000;


  imageDraufsicht.Canvas.rectangle(0,0, Breite div 5 , Hoehe div 5 );

  Lv:= Lv/5;
  Bv:= Bv/5;
  Hv:= Hv/5;
  Breite := Breite div 5;
  Hoehe := Hoehe div 5;
  v:=1;
  c:=1;

  begin
  repeat c:=c+1 until
  (c+1) * Bv > Breite;
  if (c+1) * Bv > Breite then c:= c-1;

  repeat v:=v+1 until
  (v+1) * Lv > Hoehe;
  if (v+1) * Lv > Hoehe then v:= v-1;
  end;

  

  //1.Senkrechte
  imageDraufsicht.Canvas.MoveTo(round(Bv),0);
  imageDraufsicht.Canvas.LineTo(round(Bv),round(v * Lv));

  //1.Waagerechte
  imageDraufsicht.Canvas.MoveTo(0,round(Lv));
  imageDraufsicht.Canvas.LineTo(round(c * Bv),round(Lv));

  //2.Senkrechte
  if 2*Bv < Breite then
  begin
  imageDraufsicht.Canvas.MoveTo(round(2 * Bv ),0);
  imageDraufsicht.Canvas.LineTo(round(2 * Bv ),round(v * lv));
  end;

  //2.Waagerechte
  if 2 * Lv < Hoehe then
  begin
  imageDraufsicht.Canvas.MoveTo(0,round(2 * Lv));
  imageDraufsicht.Canvas.LineTo(round(2 * Bv),round(2 * Lv));
  end;


Das zeichnen der Senk- / Waagerechten müsste eigentlich mit repeat, while etc.. funktionen gemacht werden, da evtl. eine große Anzahl dieser vorkommen kann und diese von den Parametern c und v abhängt, jedoch hängt sich das Programm immer auf sobald ich diese Funktionen nutze.
Evtl. hat jemand einen Hinweis.
Danke
  Mit Zitat antworten Zitat