Canvas

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
engin
Üye
Mesajlar: 2
Kayıt: 21 Haz 2023 08:41

Canvas

Mesaj gönderen engin »

Canvas textout kulllanmadan bir yazıyı nasıl yazarız ve yazsak bile yazının konumunu bir scrollbara bağlayıp nasıl değiştirebiliriz.
ertank
Kıdemli Üye
Mesajlar: 1662
Kayıt: 12 Eyl 2015 12:45

Re: Canvas

Mesaj gönderen ertank »

Merhaba,

Sorunuz çok anlaşılır değil. Çözemediğiniz sorun nedir? Yapmak istediğiniz.

Teşekkürler.
engin
Üye
Mesajlar: 2
Kayıt: 21 Haz 2023 08:41

Re: Canvas

Mesaj gönderen engin »

Canvas ile herhangi bir şeyi bir yazıyı butonun clickine yazıyorum . Direkt form üzerine vermeli yazııyı image vesaire kullanmamalıyım. Sonrasında bu yazının yerini scrollbarlar ile sağa sola aşağı yukarı hareket ettirebilmeliyim butonu 2.defa kullanmadan. Ancak ben butonu tıklıyorum yazı geliyo sonra scrollbarın konumunu değiştirip tekrar tıklıyorum butona , yanına bir tane daha bir daha yazıyo .Yani ne yerini değiştirmiş oluyorum çünkü ilk yazı orda duruyo 2. bir tane yazmış oluyorum ne de butonu tekrar kullanmadan yapabiliyorum.
ertank
Kıdemli Üye
Mesajlar: 1662
Kayıt: 12 Eyl 2015 12:45

Re: Canvas

Mesaj gönderen ertank »

Canvas aslında bir kağıt gibidir. Yazdığınızı silmeniz gerekir. Aşağıda çok basitleştirilmiş bir örnek mevcut.
Optimizasyon için eski yazı boyutlarını saklayıp sadece eski yazıyı silebilirsiniz. Bütün formu boyamaktan daha hızlı olacaktır.

Kod: Tümünü seç

unit Unit1;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
    FX, FY: Integer;
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  Form1.Canvas.Pen.Style := TPenStyle.psClear;
  Form1.Canvas.Brush.Style := TBrushStyle.bsClear;
  Form1.Canvas.Brush.Color := Form1.Color;
  Form1.Canvas.Rectangle(0, 0, Form1.Width, Form1.Height);
  Inc(FX, 30);
  Inc(FY, 30);
  Form1.Canvas.TextOut(FX, FY, 'deneme');
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  FX := 0;
  FY := 0;
end;

end.
Cevapla