Timage.canvas

Für Fehler in Lazarus, um diese von anderen verifizieren zu lassen.
Antworten
WeHei
Beiträge: 11
Registriert: So 30. Okt 2016, 08:03

Timage.canvas

Beitrag von WeHei »

Beim Aufruf von form1.image1.canvas.brush.color:=clgreen bleibt der Standardwert bsSolid erhalten.
Wie bringe ich den Standardwert weg?
Danke
WeHei

Mathias
Beiträge: 6160
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Timage.canvas

Beitrag von Mathias »

So bekomme ich ein rotes Rechteck.

Code: Alles auswählen

procedure TForm1.FormPaint(Sender: TObject);
begin
  Image1.Canvas.Brush.Color := clRed;
  Image1.Canvas.Rectangle(10, 10, 100, 100);
end;     

Man müsste mehr Code sehen, das man bei dir einen Fehler erkenne kann.
So nebenbei kannst du die das form1.xxx sparen, wen es sich in der gleiche Klasse befindet.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

WeHei
Beiträge: 11
Registriert: So 30. Okt 2016, 08:03

Re: Timage.canvas

Beitrag von WeHei »

Hallo Mathias, als Anhang der Code
Danke
Dateianhänge
Graphik.zip
(6.08 MiB) 154-mal heruntergeladen

Mathias
Beiträge: 6160
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Timage.canvas

Beitrag von Mathias »

Für das Zeichen von Linien muss man Pen (Stift) nehmen, Brush (Füllfarbe), wird zB. für Rechtecke gebraucht.

Code: Alles auswählen

procedure TForm1.zeichnebild(Sender: TObject);
begin
  with form1.image1.canvas do begin
    font.color := clred;
    textout(20, 20, 'adam');
 
    brush.color := clGreen;
    pen.color := clRed;
    moveto(40, 40);
    lineto(100, 170);
    Rectangle(100, 100, 200, 200);   // da sieht man Brush und Pen gut.
  end;
end;
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

WeHei
Beiträge: 11
Registriert: So 30. Okt 2016, 08:03

Re: Timage.canvas

Beitrag von WeHei »

Das Problem ist teilweise gelöst, ABER , der voreingestellte Wert "bsSolid" ist immer noch aktiv. Deine Programmzeilen bewirken ein farbiges Rechteck auf schwarzem Grund. Ich suche im Eigenschaftsbereich von Timages eine Einstellmöglichkeit.
Danke


Mathias
Beiträge: 6160
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Timage.canvas

Beitrag von Mathias »

WeHei hat geschrieben:Das Problem ist teilweise gelöst, ABER , der voreingestellte Wert "bsSolid" ist immer noch aktiv. Deine Programmzeilen bewirken ein farbiges Rechteck auf schwarzem Grund. Ich suche im Eigenschaftsbereich von Timages eine Einstellmöglichkeit.
Danke

Was willst du genau machen ?
Willst du, wen du eine neue Images erzeugst, das sie eine andere Farbe als schwarz hat ?
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

WeHei
Beiträge: 11
Registriert: So 30. Okt 2016, 08:03

Re: Timage.canvas

Beitrag von WeHei »

Du sagst es.
Im Entwurfsmodus ist das Image weiß,
zur Laufzeit wird es schwarz, auf diesem Hintergrund kann man arbeiten, den Hintergrund möchte ich weiß haben.
Danke

Mathias
Beiträge: 6160
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Timage.canvas

Beitrag von Mathias »

Im Entwurfsmodus ist das Image weiß,

Wie hast du dies hingekriegt, bei mir hat das Images die gleiche Farbe, wie die darunterliegende Komponente (Form/Panel).

zur Laufzeit wird es schwarz, auf diesem Hintergrund kann man arbeiten, den Hintergrund möchte ich weiß haben.

Bis jetzt habe ich auch nichts schlaueres gefunden, als einfach ein farbiges Rechteck zu zeichnen.

Code: Alles auswählen

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
  Image1.Width := 400;
  Image1.Height := 400;
  with Image1.Picture.Bitmap do begin
    SetSize(400, 400);
    Canvas.Brush.Color := clRed;
    Canvas.FillRect(0, 0, Width, Height);
  end;
end;       
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

WeHei
Beiträge: 11
Registriert: So 30. Okt 2016, 08:03

Re: Timage.canvas

Beitrag von WeHei »

Weiß im Entwufrsmodus war nicht weiß sondern die Farbe des Panels.
Deine farbigen Rechtecke gelingen, aber wenn etwas hineingezeichnet wird, ist alles beim alten.
Das Problem scheint nicht trivial zu sein.

Mathias
Beiträge: 6160
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Timage.canvas

Beitrag von Mathias »

Kannst du nochmals deinen Code posten, vielleicht sieht man dann mehr.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

WeHei
Beiträge: 11
Registriert: So 30. Okt 2016, 08:03

Re: Timage.canvas

Beitrag von WeHei »

Der Code ist nicht sehr lang, ich suche eine Einstellung, die den Default-Wert schwarz ausschaltet.
Dateianhänge
Timage.zip
(6.08 MiB) 127-mal heruntergeladen

wp_xyz
Beiträge: 4869
Registriert: Fr 8. Apr 2011, 09:01

Re: Timage.canvas

Beitrag von wp_xyz »

Du musst natürlich vorher die Fläche des Bitmaps in der gewünschten Hintergrundfarbe füllen:

Code: Alles auswählen

procedure TForm1.zeichne(Sender: TObject);
begin
  with Image1.canvas do
  begin
    Brush.Color := clSilver;                       // Hintergrundfarbe des Bildes festlegen
    FillRect(0, 0, Image1.Width, Image1.Height);   // Hintergrund in dieser Farbe füllen
 
    Brush.Color:=clred;
    pen.color:=clyellow;
    Pen.width:=1;
    MoveTo(200,200);
    LineTo(500,500);
    ellipse(200,100,100,300);
    MoveTo(100,300);LineTo(300,300);
 
    Brush.Style := psClear;   // Verhindert gelb umrandeten roten Hintergrund des Textes
    Pen.Style := psClear;
    TextOut(100,400,'Sinus');
  end;
end;

WeHei
Beiträge: 11
Registriert: So 30. Okt 2016, 08:03

Re: Timage.canvas

Beitrag von WeHei »

Danke, es läuft.

Antworten