Thema: Text Overlay

Einzelnen Beitrag anzeigen

EWeiss
(Gast)

n/a Beiträge
 
#1

Text Overlay

  Alt 30. Mär 2015, 16:03
Ich zeichne auf Image.canvas und möchte nun einen Text überlagern ohne das dieser gelöscht wird.
Wie gehe ich da am besten vor?

Betrifft das Projekt
http://www.delphipraxis.net/184476-p...-new-post.html

Irgendwo hier in ein Bitmap kopieren?

Delphi-Quellcode:
procedure TForm1.btnHelpClick(Sender: TObject);
var
  Txt: string;
  R: TRect;
begin

  if not HelpIsOn then
  begin
        Image1.Canvas.Font.Name := 'Consolas';
        Image1.Canvas.Font.Size := 10;
        Image1.Canvas.Font.Style := [fsBold];
        Txt := Txt + ' ' + sLineBreak + sLineBreak;
        Txt := Txt + ' Anleitung' + sLineBreak + sLineBreak;
        Txt := Txt + ' 1. Set drücken' + sLineBreak;
        Txt := Txt + ' 2. Run drücken' + sLineBreak;
        Txt := Txt + ' 3. Abwarten, zuschauen' + sLineBreak;
        Txt := Txt + ' 4. Kick X oder Kick Y drücken - spielen,' + sLineBreak;
        Txt := Txt + ' zuschauen ' + sLineBreak;
        Txt := Txt + ' 5. Stop drücken' + sLineBreak;
        Txt := Txt + ' 6. Roten oder schwarzen Punkt mit der Maus ' + sLineBreak;
        Txt := Txt + ' verschieben ' + sLineBreak;
        Txt := Txt + ' 7. Run drücken, weiterspielen' + sLineBreak;
        Txt := Txt + ' 8. Break oder Ende in der IDE' + sLineBreak;
        Txt := Txt + ' 9. Parameter D in SetParam ändern: 0 bis 10000' + sLineBreak;
        Txt := Txt + ' 10. Neu starten, weiterspielen' + sLineBreak;
        Txt := Txt + ' 11. Code nach .Net übersetzen oder Code' + sLineBreak;
        Txt := Txt + ' nach eigenen Vorstellungen erweitern' + sLineBreak;
        Txt := Txt + ' 12. Kluge Bemerkungen im Forum machen, den' + sLineBreak;
        Txt := Txt + ' Autor mit Lob überhäufen, Kritik üben :-)' + sLineBreak;
        Txt := Txt + ' ' + sLineBreak;
        Txt := Txt + ' 99. ? drücken um den blöden Text wegzumachen' + sLineBreak;

        R := Rect(Graph.xxc(Graph.xMin), Graph.yyc(Graph.yMax), Graph.yyc(Graph.yMin),Graph.xxc(Graph.xMax) );

        Image1.Canvas.FillRect(R);
        DrawText(Image1.Canvas.Handle, PWideChar(Txt), -1, R, DT_LEFT);
        HelpIsOn := True
    end else
    begin
      Graph.PrepareScale;
      Graph.Draw;
      HelpIsOn := False;
    end;
end;
Mein Problem ist das ich im weiteren verlauf um die Grafik neu zu zeichnen.
Die alte mit
Delphi-Quellcode:
  // Hintergrund löschen
  Image.Canvas.FillRect(Image.Canvas.ClipRect);
lösche.
Der Text wird dann natürlich auch gelöscht.


gruss
  Mit Zitat antworten Zitat