Ekrana Yazı Yazma ..
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Ekrana Yazı Yazma ..
Ekranın belli koordinatlarına istediğim renkte ve boyutta yazı yazmak istiyorum daha sonra istediğim zaman o yazıyı temizlemek istiyorum nasıl bir kod kullanabilirim ?
-
- Kıdemli Üye
- Mesajlar: 1223
- Kayıt: 26 Nis 2005 04:08
Kod: Tümünü seç
procedure TForm1.Yaz(x, y: integer; yazi: string);
var
Handle: HWND;
Dc: HDC;
ACanvas: TCanvas;
begin
Handle := GetDesktopWindow;
Dc := GetWindowDC(Handle) ;
ACanvas := TCanvas.Create;
try
ACanvas.Handle := DC;
BeginPath(ACanvas.Handle) ;
ACanvas.Font.Color := clRed;
ACanvas.Font.Name := 'Tahoma';
ACanvas.Font.Size := 30;
SetBkMode(ACanvas.Handle, TRANSPARENT) ;
EndPath(ACanvas.Handle) ;
ACanvas.TextOut(x,y,yazi) ;
finally
ReleaseDC(Handle, ACanvas.Handle) ;
ACanvas.Free;
end;
end;
Not:Kodlar delphiturkiye.com'dan

- Murat DİCLE
- Kıdemli Üye
- Mesajlar: 702
- Kayıt: 19 Nis 2006 04:12
- Konum: İstanbul
- İletişim:
Merhaba,
Yazı yazacağın bir form oluştur, ve formu transparent yap. üstüne ne istiyorsan yaz sonra formu close yaptığında yazında gitmiş olacaktır.
Direk olarak Desktop'a yazılabiliyor ancak F5 ile desktpu tazelersen yazı gider. bu nedenle yazılacak alanı en basitinden bir form yada bir panel olarak ayarlamak en kolay yöntem olacaktır.
Saygılar..
Yazı yazacağın bir form oluştur, ve formu transparent yap. üstüne ne istiyorsan yaz sonra formu close yaptığında yazında gitmiş olacaktır.
Direk olarak Desktop'a yazılabiliyor ancak F5 ile desktpu tazelersen yazı gider. bu nedenle yazılacak alanı en basitinden bir form yada bir panel olarak ayarlamak en kolay yöntem olacaktır.
Saygılar..
Kod: Tümünü seç
...
ACanvas.TextOut(x,y+satirsay*30,Memo1.Lines[satirsay]) ;
...
@muratdicle haklı desktop a çizmenin sakıncaları var. Başka bir sakıncada aktif formun çizilen şeyi örtmesi.
Direk bir forma çizmeli. Yalnız bazı Transparan yapma yolarında (AlphaBlend ile oynamak gibi) çizilen şeyde görünmez.
Önerim;
Kod: Tümünü seç
Form.Color:=//bir renk örneğin clMaroon
Form.TransparentColorValue:= //üstteki renk örnekte clMaroon
Form.TransparentColor:=True;
Aslında benim istediğim de buydu yani üzerinden birşey geçince silinsin. Herşey güzel fakat çoklu satır ekleyemiyorumposhet303 yazdı:gibi bir şey yapmalı. Memo1.Text ile hepsini bir satıra yazar sanırım. Ayrıca 255 karekterden fazlası yazılmaz.Kod: Tümünü seç
... ACanvas.TextOut(x,y+satirsay*30,Memo1.Lines[satirsay]) ; ...

Yani memode ne kadar alt satıra geçersem geçeyim ekranda boş kutu gözüküyor alt satıra inmiyor

Kod: Tümünü seç
procedure TForm1.Button1Click(Sender: TObject);
var
i:integer;
begin
For i:=0 to Memo1.Lines.Count-1 Do
Yaz(10,i*30,Memo1.Lines.Strings[i]);
end;
ACanvas.TextOut yerine DrawText API fonksiyonunu deneyin. Belirttiğiniz dikdörtgene göre boyutlandırıp yazdırabilirsiniz.Yani memode ne kadar alt satıra geçersem geçeyim ekranda boş kutu gözüküyor alt satıra inmiyor
Örnek:
Kod: Tümünü seç
Str := 'MERHABA'#13#10'ALŞSDJKAKLSD';
DrawText(DC,Pchar(str),length(Str),Rect(0,0,100,100),DT_WORDBREAK);
Kod işe yarıyor fakat burdaki y değişkeni memo arasındaki satır boşluğunu belirliyor. Peki Y koordinatını nereye yazmam gerekiyorulu coder yazdı:Kod: Tümünü seç
procedure TForm1.Button1Click(Sender: TObject); var i:integer; begin For i:=0 to Memo1.Lines.Count-1 Do Yaz(10,i*30,Memo1.Lines.Strings[i]); end;
