Delphi: Canvas does not allow drawing Hatası

  08/29/2010, Yazar: Özgür Koca, Kategori: Delphi

Canvas does not allow drawing” hatası tuval çizime izin vermiyor gibi bir anlam taşıyor. Tuval ressamların resimlerini çizdikleri yüzeye verilen ad burada ise programdaki bileşenlerin görsel kısımlarına (arabirim) karşılık geliyor.

Canvas hatası iki nedenden kaynaklanabilir. Ya çizim yapacak kaynağınız kalmamıştır ya da multithread bir programda tuvali boyamaya çalışan iki fırça birbiriyle çakışıyordur. Dediğimiz gibi bu Canvas hatası ençok multithread programlarda karşımıza çıkıyor. VCL bileşenleri thread-safe değillerdir. Bu yüzden bileşenlerin görsel özellikleriyle işlem yaparken Synchronize fonksiyonunu kullanmalısınız. Synchronize’a parametre olarak verdiğiniz alt program thread-safe olarak çalıştırılır. Yani canvas sorunu çıkartacak görsel işlemleri güvenli bir zamanda icra ettirmiş olursunuz. Aşağıdaki thread örneğini inceleyebilirsiniz.

unit Unit1;

interface

uses
 Classes;

type
 MyThread = class(TThread)
 private
 { Private declarations }
 protected
 procedure Execute; override;
 end;

implementation

{ Onemli: VCL ve CLX nesnelerinin metod ve özellikleri
 Synhronize içinden çağırılarak kullanılmalıdır. Örneğin,

 Synchronize( MemoyuGuncelle);

 ve MemoyuGuncelle su sekildedir,

 procedure MyThread.MemoyuGuncelle;
 begin
 Memo1.Text := 'Thread içinde güncellendi';
 end; }

{ MyThread }

procedure MyThread.Execute;
begin
 { Place thread code here }
end;

end.

Multithread programlarınızda mesaj kutusu kullanmanız gerektiğinde Synchronize kullanmak pratik olmayabilir. Bunun için Delphi’nin fonksiyonunu kullanabilirsiniz. Messagebox’ın diğer diyalog kutularından farkı thread-safe olmasıdır. Ayrıca Delphi’de multithread programlama konusunda okumanızı şiddetle tavsiye edeceğim bir makale dizisi .

Canvas (tuval) hatasının birkaç oluşma nedeni olabilir. GDI (Graphic Device Interface) kaynaklarının aşırı tüketilmesi durumunda oluşabildiği de yazmakta. GDI,  çizgiler, eğriler, fontların yorumlanması, renklerin yönetilmesi gibi işlerden sorumlu, işletim sistemi çekirdeği ile çıktı aygıtı (ekran kartı) arasında görev yapan bir Windows bileşeni. Bu sorundan sıyrılmak için programdaki görsel bileşen sayısını azaltmak, sistem belleği miktarını veya ekran kartı belleğini artırmak çözüm yolu olarak gözüküyor.

Umarım canvas hatasını ayıklamayı becerebilirsiniz.

canvas does not allow drawing (60), delphi multithread (6), delphi canvas does not allow drawing (6), graphics interface thread (6), delphi canvas (5), canvas does not allow drawing ne demek (3), graphics interface thread hatası (3), delphide tuval (2), canvas does not allow drawing delphi (2), graphics interface thread nedir (2), graphics interface thread ne demek (2), graphics interface thread çözümü (1), graphics interface thread hatas (1), medisoftta canvas does not allow drawing hatası nedir (1), multithread nedir (1)







1 Puan2 Puan3 Puan4 Puan5 Puan6 Puan7 Puan8 Puan9 Puan10 Puan (1 votes, average: 10,00 out of 10)


Biraz gürültü yapın





Not: Yazdığınız yorum yönetici tarafından onaylandıktan sonra yayınlanacaktır.


  Yorumlara eposta ile abone ol




  • Hakkında | İletişim | Wordpress.org | RSS | Abone Ol

  • (c) 2005-2009 Wordpress Tema: Tankado & Theme by Tankado.com