Grafik bilgilerini görüntülemek için bileşenler. "Delphi'de grafiksel bilgilerin görüntülenmesi" konulu sunum. Teoriden kısa bilgi

Grafik bilgilerini görüntülemek için Delphi kütüphanesi, listesi tabloda verilen bileşenleri sağlar. 6.

Tablo 6

Grafik bilgilerini görüntülemek için bileşenler

Bileşen Sayfa Tanım
Resim Ek olarak Grafikleri görüntülemek için kullanılır
PaintBox (çizim penceresi) Sistem Formda çizim yapabileceğiniz bir alan oluşturmak için kullanılır
DrawGrid (çizim tablosu) Ek olarak Metin olmayan verileri satır ve sütunlarda görüntülemek için kullanılır
Grafik (grafikler ve grafikler) Ek olarak Bileşen, çizelgeler ve grafikler oluşturmak için kullanılan TeeChart bileşen ailesine aittir.
Chartfx (grafikler ve grafikler) ActiveX Grafik ve grafik düzenleyici
FIBook (Excel sayfaları) ActiveX Sayısal bilgi girişi ve işleme bileşeni
VtChart (grafikler) ActiveX Diyagram penceresi

Ayrıca bu özelliğe sahip herhangi bir pencere bileşeninin yüzeyinde grafik bilgileri görüntüleyebilir ve girebilirsiniz. Tuval- tuval.

Görüntü Tabloları - DrawGrid ve StringGrid Bileşenleri

Bileşen Çizim Izgarası Bir uygulamada grafik görüntüler içerebilen bir tablo oluşturmak için kullanılır. Bu bileşen bileşene benzer Dize Izgarası ikincisi türetildiği için DrawGrid. Bu nedenle, Çizim Izgarası bileşenin tüm özellikleri, yöntemleri ve olayları mevcut Dize Izgarası metinle ilgili olanlar hariç, yani. özellikler hariç Hücreler, Sütunlar, Satırlar, Nesneler. Bu açıdan bakıldığında bileşen Dize Izgarası göre çok daha büyük yeteneklere sahiptir Çizim Izgarasıçünkü hem görselleri hem de metinleri hücrelerde saklayabilir. Bazı hücrelere metin girmek istiyorsanız Çizim Izgarası o zaman bunun için metni taslak üzerinde görüntülemeye yönelik yöntemler kullanmanız gerekecektir ki bu pek uygun değildir.

Bileşenler DrawGrid ve StringGrid bir taslağa sahip olmak Tuval, görüntüleri yayınlayabileceğiniz yer.

Bir yöntem var Hücre-Dikdörtgen, belirli bir hücre için ayrılan tuval alanını döndürür. Bu yöntem şu şekilde tanımlanır:

function CellRect(ACol, ARow: Longint): TRect;

Nerede ACol ve ARow- hücrenin bulunduğu kesişim noktasında 0'dan başlayan sütun ve satır endeksleri. Bu fonksiyonun döndürdüğü alan, istenilen görüntünün çizilebileceği tuval alanıdır. Örneğin, operatör

DrawGridl.Canvas.CopyRect(DrawGridl.CellRect(1,1),

BitMap.Canvas,Rect(0,0,BitMap.Height,BitMap.Width));

kopya yöntemi KopyalaDüzey tablonun (1,1) hücresine Çizim Izgarası bileşenden görüntü BitMap. Bu hücre, indeksler 0'dan başladığı için tabloda soldan ikinci ve üstten ikincidir. Hücre, kopyalanan görüntünün boyutundan küçükse, görüntünün yalnızca sol üst kısmının görüneceğini lütfen unutmayın. hücre.

Bileşen tuvalindeki resim DrawGrid ve StringGrid, Herhangi bir bileşenin tuvalinde olduğu gibi, uygulama penceresi diğer pencerelerle örtüştüğünde veya örneğin uygulama simge durumuna küçültüldüğünde silinmeye maruz kalır.

Görüntüleri hücrelere girmenin kolay bir yolu Çizim Izgarası bir olay işleyicisi kullanmaktır OnDrawCell. Bu olaylar, yeniden çizildiğinde her tablo hücresi için gerçekleşir. İşleyici başlığı şuna benzer:

prosedür TForml.DrawGridlDrawCell(Sender: TObject;

ACol, ARow: Tamsayı; Doğrultma: TRect; Durum: TGridDrawState)

Parametre Durum hücrenin durumunu gösterir. Aşağıdaki unsurları içerebilen bir settir: gdSeçildi- seçili hücre, gdOdaklanmış- Odaktaki hücre, gdSabit- masanın sabit bir alanındaki bir hücre. Parametre Durum hücreleri farklı durumlarda farklı şekilde görüntülemek için kullanılabilir.

Şekil Bileşeni

Şekil Bileşeni yalnızca uygun şekilde gölgelendirilmiş çeşitli geometrik şekilleri temsil ettiğinden, grafik bilgileri görüntüleme aracı olarak yalnızca koşullu olarak sınıflandırılabilir. Bu bileşenin ana özelliği Şekil(form) aşağıdaki değerleri alabilir:

StRectangle – dikdörtgen;

StSquare – kare;

StRoundRect - köşeleri yuvarlatılmış dikdörtgen;

StRouhdSquare - köşeleri yuvarlatılmış kare;

StEllipse – elips;

StCircle - daire.

Bileşenin bir diğer önemli özelliği ise Fırçalamak(fırçalamak). Bu özellik bir tür nesnesidir fırça, başta renk olmak üzere bir dizi alt özelliğe sahip (Fırça.Renk) ve stil (Fırça. Stili) rakamı dolduruyor. Şekil 2'de bazı Stil değerlerinin dolgusunu görebilirsiniz. 3.2. Bileşenin üçüncü spesifik özelliği Şekil- Dolma kalem(kalem) çizgi stilini tanımlar.

Grafik Bileşeni

Şimdi bileşene bakalım Çizelge. Bu bileşen, çok etkileyici görünen çeşitli çizelgeler ve grafikler oluşturmanıza olanak tanır. Bileşen Çizelge pek çok özelliği, yöntemi, olayı var, dolayısıyla hepsini dikkate alırsak, bütün bir bölümü buna ayırmamız gerekir. Bu nedenle kendimizi yalnızca temel özellikleri dikkate alarak sınırlayacağız. Çizelge. Gerisini Delphi'nin yerleşik yardımında bulabilir veya diyagramları deneyerek deneyebilirsiniz.

Bileşen Çizelge nesnelerin bulunduğu bir kaptır Seri- sınıfın mirasçıları TChartSeries. Bu tür nesnelerin her biri, belirli bir görüntüleme stiliyle (belirli bir grafik veya diyagram) karakterize edilen bir dizi veriyi temsil eder. Her bileşen Çizelge birkaç bölüm içerebilir. Bir grafiği görüntülemek istiyorsanız, her seri grafikteki bir eğriye karşılık gelecektir. Grafikleri görüntülemek istiyorsanız, bazı grafik türleri için birkaç farklı seriyi üst üste yerleştirebilirsiniz, diğerleri için (pasta grafikler gibi) muhtemelen çirkin görünecektir. Ancak bu durumda bile tek bir bileşen için ayar yapabilirsiniz. Çizelge farklı grafik türlerine sahip aynı verilerin birkaç serisi. Daha sonra her seferinde bunlardan birini aktif hale getirerek kullanıcıya ilgi duyduğu verileri görüntüleyen grafik türünü seçme olanağı sağlayabilirsiniz.

Bir veya iki bileşeni yerleştirin Çizelge formda ve Nesne Denetçisinde açılan özelliklere bakın. İşte bunlardan bazılarının açıklamaları.

AllowPanning - kullanıcının, yürütme sırasında farenin sağ tuşuna basarak grafiğin gözlemlenen kısmını kaydırma yeteneğini belirler. Olası değerler: pmNone - kaydırma yasaktır, pmHori/ontal, pm Vertical veya pmBoth - kaydırmaya sırasıyla yalnızca yatay yönde, yalnızca dikey yönde veya her iki yönde izin verilir.

AhowZoom - kullanıcının fare imleciyle bir grafiğin veya grafiğin bölümlerini keserek çalışma zamanında bir görüntünün yakınlaştırmasını değiştirmesine olanak tanır. Bir parçanın çerçevesi sağa ve aşağıya doğru çizilirse bu parça, grafiğin tüm alanını kaplayacak şekilde gerilir. Ve eğer çerçeve yukarı ve sola doğru çizilirse, orijinal ölçek geri yüklenir.

Başlık - diyagramın başlığını tanımlar.

Ayak - diyagramın altındaki başlığı tanımlar. Varsayılan olarak hiçbiri. İmza metni Metin alt özelliği tarafından belirlenir.

Çerçeve - diyagramın etrafındaki çerçeveyi tanımlar.

Nesne Denetçisinde listelenen özelliklerin çoğunun yanında, Grafik Düzenleyicinin bir veya başka sayfasını çağırmanıza olanak tanıyan elipsli düğmeler vardır - grafiklerin tüm özelliklerini ayarlamanıza olanak tanıyan çok sayfalı bir pencere. Diyagram Düzenleyicisi bileşene çift tıklanarak da çağrılabilir Çizelge veya üzerine sağ tıklayıp açılan menüden Grafiği Düzenle komutunu seçerek.

Üstteki bileşene çift tıklayın Çizelge. Birkaç sekme içeren Grafik sayfasındaki Grafik Düzenleyici penceresine yönlendirileceksiniz. Öncelikle üzerindeki Seriler sekmesi ilginizi çekecektir. Ekle düğmesine tıklayın - bir seri ekleyin. Grafik veya grafiğin türünü seçebileceğiniz bir pencereye yönlendirileceksiniz. Bu durumda Pasta - bir pasta grafiği seçin. Başlıklar sekmesini kullanarak grafiğin başlığını ayarlayabilirsiniz, Gösterge sekmesi grafik açıklamasını (sembol listesi) görüntülemek için parametreleri ayarlamanıza veya onu ekrandan tamamen kaldırmanıza olanak tanır, Panel sekmesi panelin ekrandaki görünümünü belirler. Grafiğin görüntülendiği 3B sekmesi size grafiğinizin görünümünü değiştirme fırsatı verir: eğim, kaydırma, kalınlık vb.

Grafik Düzenleyicide çalışırken ve bir grafik türü seçtiğinizde, bileşenler Çizelge Formunuz, içine girilen koşullu verilerle birlikte görünümünü görüntüler. Bu nedenle uygulamanıza çeşitli seçenekleri uygulamanın sonucunu hemen görebilirsiniz ki bu da oldukça kullanışlıdır.

Aynı zamanda bir dizi sekmeye sahip olan Seri sayfası, seri için ek görüntüleme seçeneklerini belirleme olanağı sağlar. Özellikle bir pasta grafiği için, Biçim sekmesinde, grafiğin Grafik bileşeninin herhangi bir boyutunda bir daire olarak görüntülenmesini sağlayacak olan Dairesel Pasta seçeneğinin etkinleştirilmesi yararlı olacaktır. İşaretler sekmesinde, Stil grubunun düğmeleri, grafiğin ayrı bölümleriyle ilgili etiketlere ne yazılacağını belirler: Değer - değer, Yüzde - yüzdeler, Etiket - veri adları vb.

Dilerseniz Grafik sayfasının Seriler sekmesindeki Klonla butonuna tıklayarak bu Grafik bileşenine aynı seriyi daha ekleyebilirsiniz ve bunun için yeni seri Değiştir düğmesine tıklayın ve farklı bir grafik türü seçin; örneğin Çubuk.

Grafik Düzenleyiciden çıkın, uygulamanızda alttaki Grafik bileşenini seçin ve Grafik Düzenleyiciyi kullanarak özelliklerini ayarlamayı tekrarlayın. Bu durumda grafikte iki eğrinin görüntülenmesini istiyorsanız iki seri belirtmeniz ve Çizgi grafik tipini seçmeniz gerekecektir. Çünkü Hakkında konuşuyoruz grafikler hakkında, grafiğin eksenlerinin ve üç boyutlu kenarlarının koordinat özelliklerini belirtmek için Eksen ve Duvarlar sekmelerini kullanabilirsiniz.

Tasarım için bu kadar dış görünüş uygulama biter. Geriye sadece görüntülemek istediğiniz veriyi belirten kodu yazmak kalıyor. Test uygulaması için pasta grafikte sadece bazı sabit veriler, grafiklerde ise bazı fonksiyonlar ayarlayalım.

Görüntülenen değerleri ayarlamak için Seri yöntemlerini kullanmanız gerekir. Sadece üç ana yönteme odaklanalım.

Yöntem Temizlemekönceden girilen bir dizi veriyi temizler.

Yöntem Eklemek:

Add(Const AValue:Double; Const ALabel:String; AColor:TColor) ,

Diyagrama yeni bir nokta eklemenizi sağlar. Parametre Bir değer katma değere karşılık gelir, parametre Bir etiket- şemada ve açıklamalarda görüntülenecek bir etiket, Bir renk- renk. Parametre Bir etiket- isteğe bağlı, boş olarak ayarlanabilir: ' '. Yöntem XY ekle:

AddXY(Sabit AXValue, AYValue: Double; Const ALabel: String; AColor: TColor)

fonksiyon grafiğine yeni bir nokta eklemenizi sağlar. Seçenekler AX Değeri Ve AY Değeri argümana ve fonksiyona karşılık gelir. Seçenekler ALabel ve AColor yöntemdekiyle aynı Eklemek.

Dolayısıyla örneğimizdeki veri yükleme prosedürü şöyle görünebilir:

sabit Al=155; A2=251; A3=203; A4=404; var i:kelime; başlamak

Seri ile başlayın

Add(Al,"Atölye l",clYellow);

Ekle(A2,"Atölye 2",clBlue);

Ekle(A3,"Atölye 3",clRed);

Ekle(A4,"Atölye 4",clPurple); son;

Seri2.Temizle; SeriS.Clear; i:=0 ila 100 için başlar

Seri2.AddXY(0,02*Pi*i,sin(0,02*Pi*i)

SeriS.AddXY(0,02*Pi*i,cos(0,02*Pi*i) uç;

ClRed); ,clMavi);

Operatörler Temizlemek Uygulama çalışırken verileri güncelleyecekseniz gereklidir.

Bu, bileşene girişimizi tamamlıyor Çizelge. Doğru, yeteneklerinin yalnızca küçük bir kısmını değerlendirdik.

Grafiklerle çalışma Delphi'de mesele sadece çizgiler ve çizimler değil, aynı zamanda baskıdır metin belgeleri. Bu nedenle, Delfi iş başında grafiklerle biraz zaman ayırmanız gerekiyor. Birlikte çalışmak Delphi'de grafikler tuvale (bileşenlerin Canvas özelliği) erişmeyi içerir. Kanvas Delphi bu, programcının her bir noktaya (piksel) erişmesine ve bir sanatçı gibi gerekli olanı göstermesine olanak tanıyan bir tuvaldir. Elbette piksel piksel çizin grafiklerle çalışmak Delphi'de gerekli değildir, Delphi sistemi güçlü sağlar grafik araçları programcının işini kolaylaştırır.

Delphi'de grafiklerle çalışırken programcının elinde bir taslak (tuval, tuval - özellik) vardır. Tuval Delphi bileşenleri), kurşun kalem (özellik Dolma kalem), üzerine boyamanız gereken bileşenin veya nesnenin fırçasını (Fırça özelliği). Kurşun kalemde Dolma kalem ve fırçalar Fırçalamak rengi (Renk özelliği) ve stili (Stil özelliği) değiştirebilirsiniz. Yazı tiplerine erişim canvas özelliği tarafından sağlanır Yazı tipi. Bu araçlar, çizimlerin yanı sıra matematik ve mühendislik içeriğinin hem metinlerini hem de oldukça karmaşık grafiklerini görüntülemenize olanak tanır. Ayrıca, grafiklerle çalışmak bu tür kaynakları Delphi'de kullanmanıza izin verir pencereler grafikler ve video dosyaları gibi.

Elbette Delphi'deki tüm bileşenler bu özelliklere sahip değildir. Sekmede Ek olaraközel bir bileşen bulunur TResim, özellikle çizim için tasarlanmış, aynı zamanda özellik Tuvalörneğin ListBox, ComboBox, StringGrid gibi bileşenlerin yanı sıra bileşenlerimizi yerleştiren Form'un kendisi de var! Ek olarak Delphi, belgeleri yazdırmak için yazıcı gibi bir nesnenin Canvas özelliğine erişir.

Canvas Delphi gibi bir nesnenin ana özelliği Piksel tip Renk yani, renklerine göre belirtilen noktaların (piksellerin) iki boyutlu bir dizisidir. Tuval üzerine çizim, tuval üzerinde herhangi bir noktaya belirli bir rengin atanması anında gerçekleşir. Her piksele Windows için mevcut olan herhangi bir renk atanabilir. Örneğin, ifadenin yürütülmesi

Image1.Canvas.Pixels:=clRed;

Koordinatlarla birlikte kırmızı bir nokta çizilmesiyle sonuçlanacaktır. Bir pikselin rengini ters atamayla öğrenebilirsiniz:

Renk:=Resim1.Canvas.Pixels;

Tip Renk uzun bir tamsayı (LongInt) olarak tanımlanır. Dört baytı mavi (B), yeşil (G) ve kırmızı (R) renklerin oranları hakkında bilgi içerir. Onaltılık sistemde şuna benziyor: $00BBGGRR. Her rengin oranı 0 ila 255 arasında değişebilir. Bu nedenle maksimum kırmızı noktanın görüntülenmesi için ona atanması gerekir. renk $000000FF.
Delphi'deki standart renkler için bir dizi metin sabiti tanımlanmıştır. Bunu, örneğin aynı Formun Renk özelliğini Nesne Denetçisinde açarak görebilirsiniz.

Aşağıdaki tablo bazı tuval özelliklerini ve yöntemlerini içerir:

Prosedür TextOut(X, Y: Tamsayı; yapı Metin: WideString);
Bir dize çıktısı üretir Metin(X, Y)'den başlayarak - metnin sol üst pikseli.
Özellik TextWidth( var Metin: Dize): Tamsayı;
Dizenin uzunluğunu içerir Metin piksel cinsinden.
Özellik TextHeight( var Metin: Dize): Tamsayı;
Satır yüksekliğini içerir Metin piksel cinsinden.
Prosedür MoveTo(X, Y: Tamsayı);
Konumu (X, Y) adresli piksele taşır.
Prosedür LineTo(X, Y: Tamsayı);
Geçerli konum noktasından (X, Y) adresli piksele düz bir çizgi çizer. Adres (X, Y) mevcut konumun noktası olur.
Prosedür FillRect( yapı Doğrultma: TRect);
Bir dikdörtgeni doldurur Düz geçerli fırçayı kullanarak tuval üzerinde. Diğer şeylerin yanı sıra tuval üzerindeki görüntünün bir kısmını silmek için de kullanılabilir.

Yalnızca bu tuval yöntemlerini kullanarak bileşen tuvali üzerindeki bir görüntü için bir uygulama yazalım Resim bileşene girilen metin Hafıza:

Yapacağımız ilk şey, program başlatıldığında değişkenleri başlatmak olacaktır. Çizim alanının boyutunu belirlemek (bunun için TRect tipinde global bir değişken Rect oluşturacağız) ve arka plan rengini ayarlamak gerekir. Resim beyaz:

prosedür TForm1.FormCreate(Gönderen: TObject);
başlamak
DikdörtgenSol:=0;
DikdörtgenÜst:=0;
Rect.Right:=Resim1.Genişlik;
DikdörtgenAlt:=Resim1.Yükseklik;
Resim1.Tuval.Fırça.Renk:=clBeyaz;
son;

Ardından Resmin yanlarına bir çerçeve çizin:

prosedür TForm1.sayfa;
başlamak
ile Resim1.Canvas Yapmak
başlamak
MoveTo(0, 0);
LineTo(Image1.Width-1, 0);
LineTo(Görüntü1.Genişlik-1, Görüntü1.Yükseklik-1);
LineTo(0, Image1.Height-1);
LineTo(0, 0);
son;
son;

Ne olduğunu deneyelim. Her şey çalışıyor ancak çerçeve henüz görüntülenmiyor. Bu nedenle bir prosedür ekleyelim sayfa prosedürde FormOluştur. Şimdi çok güzel. Daha sonra Görüntüyü silmek ve temizlemek için basit bir prosedür yazacağız. Herhangi bir görüntü güncellemesinden önce çağrılması gerekecektir, aksi takdirde önceki ve sonraki görüntüler çakışacaktır.

prosedür TForm1.temizleme;
başlamak
Image1.Canvas.FillRect(Rect); //Dikdörtgen Düz beyazla doldurulur ve görüntü silinir.
son;

Şimdi sıra metin çıktısı prosedürünün kendisine geldi. Metni, 3 piksellik hafif bir girintiyle sayfanın sol üst köşesi olan (3, 3) noktasından çizmeye başlayalım. Sonraki her satır, satır yüksekliğine göre dengelenecektir:

prosedür TForm1.prn;
var i: Tamsayı;
başlamak
ile Resim1.Canvas Yapmak
için ben:=1 ile Memo1.Lines.Count Yapmak
TextOut(3, 3+(i-1)*TextHeight("A"), Memo1.Lines);
son;

Artık her şey metin çıktısı almaya hazır. Bunu OnChange olayını kullanarak yapacağız:

prosedür TForm1.Memo1Change(Gönderen: TObject);
başlamak
temizleme;
prn;
sayfa;
son;

Ve son olarak yazı tipi boyutunu değiştirme prosedürü:

prosedür TForm1.Edit1Change(Gönderen: TObject);
başlamak
Memo1.Font.Size:=YukarıAşağı1.Konum;
Image1.Canvas.Font.Size:=UpDown1.Position;
Memo1Change(Gönderen);
son;

Metin yazdırmak için bu programı değiştirebilirsiniz. Yazıcıyla çalışmak için modülü bağlamanız gerekir Yazıcılar:

birimÜnite 1;

Arayüz

kullanır
Windows, Mesajlar, SysUtils, Varyantlar, Sınıflar, Grafikler, Kontroller, Formlar,
İletişim kutuları, StdCtrls, Yazıcılar ;

Yazıcıyla tuval olarak çalışırken, yazdırmayı başlatmak için yöntem çağrılır Dokümana Başla, ardından belge çıktısı alınır, yöntem çağrılarak yazdırma tamamlanır EndDoc:

Yazıcı.BeginDoc;
ile Yazıcı.Tuval Yapmak
başlamak
...Belgeyi yazdır...
son;
Yazıcı.EndDoc;

Yazıcı ağının genişliği ve yüksekliği özelliklerden edinilebilir Yazıcı.Sayfa Genişliği Ve Yazıcı.Sayfa Yüksekliği. Yöntemi kullanarak bir sayfada yazdırmayı bitirebilir ve başka bir sayfada yazdırmaya başlayabilirsiniz. Yazıcı.YeniSayfa.

LABORATUVAR İŞİ

DERS: « Grafik girişiDelfi– en basitinin yapımı
geometrik şekiller"

Teoriden kısa bilgi

Delphi, geliştiriciye grafikleri görüntülemek için üç yol sunar:

    program çalışırken çizim yapma

    önceden oluşturulmuş grafiklerin kullanımı

    grafik bileşenlerini kullanarak görüntü oluşturma

Grafikler oluşturmak için çizim araçları ve yöntemleri sağlayan özel sınıflar oluşturulmuştur: araçlar üç sınıfta açıklanmıştır - Tfont, Tpen, Tbrush; Çizim alanı ve yöntemleri Tcanvas sınıfı tarafından sağlanır.

SınıfTfont– metni tuvalde görüntülemek için kullanılan yazı tipinin özelliklerini belirtir. Sınıfın özellikleri “Çoğu bileşen için mevcut temel özellikler” bölümünde açıklanmaktadır.

Sınıfkalem– çizgilerin çizildiği kalemin (kurşun kalemin) özelliklerini belirtir.

Özellikler sınıf kalem:

Renk:Tcolor – çizgi rengi (varsayılan – siyah)

Genişlik:integer – piksel cinsinden çizgi kalınlığı;

Stil = (psSolid, psDash, psDot, psdashDot, psClear) – çizgi stilini tanımlar (düz, kesikli, noktalı, kesikli noktalı, görünmez)

SınıfTfırça– görüntünün yüzeyini boyayan fırçanın özelliklerini ayarlar.

Özellikler sınıf Tfırça:

Renk:Tcolor – fırça rengi (varsayılan – beyaz)

Stil– fırça deseni, aşağıdaki değerleri alabilir:

BsSolid – katı renklendirme

BsClear – gölgeleme eksikliği

BsVertical – dikey çizgiler

BsBdiagonal – sağ çapraz çizgiler

BsDiagCross - eğik hücre

BsHorizontal – yatay çizgiler

BsFdiagonal – sol çapraz çizgiler

BsCross – kafes

SınıfTkanvas– oluşturulan görüntünün yerleştirileceği yüzeyi ve görüntünün oluşturulduğu araçları belirler: yazı tipi, kalem, fırça.

Varsayılan olarak, formun tüm istemci alanı çalışma alanı (tuval) olarak kullanılır (başlık, ana menü ve formun kaydırma çizgileri olmadan), ancak bileşenler kullanılarak formun içinde daha küçük çalışma alanları tahsis edilebilir Boya Kutusu veya Resim. Kanvas koordinatının orijini çalışma alanının sol üst köşesidir, çalışma alanının genişliği özellik tarafından belirlenir. İstemci Genişliği, yükseklik – özellik İstemci Yüksekliği.

Özellikler sınıf Tkanvas:

Tuval:Tcanvas – çizim alanını tanımlar

Fırçalamak:Tbrush – kapalı şekilleri doldurmak için fırça

Yazı tipi:Tfont – metni tuval üzerinde görüntülemek için kullanılan yazı tipi

Dolma kalem:Tpen – çizim için kalem (kalem)

KalemPos:Tpoint – görünmez imlecin tuval üzerindeki geçerli konumu

Yorum : Tpoint türü – aşağıdaki şekilde tanımlanır:

Tip Noktası = kayıt

Piksel: Tcolor - tuval piksellerinin renklerini, X, Y - piksel koordinatlarını ayarlar. Piksel özelliği, seçilen rengin noktalarını kullanarak grafikleri çizmek için kullanışlıdır.

TCanvas sınıfının ana yöntemleri

    prosedür Taşınmak(x,y:tamsayı); - Kalemi, koordinatları (x, y) olan bir noktaya çizgi çizmeden hareket ettirir.

    Prosedür HatTo(x,y:tamsayı); - geçerli noktadan koordinatları (x, y) olan noktaya bir çizgi çizer.

Örnek : Şeklin sol üst köşesinden sağ alt köşesine kadar şeklin üzerine çapraz mavi bir çizgi çizin.

Kalem.rengi:= clblue;

MoveTo(0,0); LineTo(ClientWidth, ClientHeight);

    prosedür Dikdörtgen(x1,y1,x2,y2:tamsayı); - bir dikdörtgen çizer: x1,y1 – sol üst köşenin koordinatları; x2, y2 sağ alt köşenin koordinatlarıdır.

Örnek : Şeklin ortasına kenarı 60 piksel olan sarı gölgeli bir kare çizin.

var Xc,Yc: tamsayı; //

Xc:=İstemci Genişliği div 2;

Xy:=İstemci Yüksekliği div 2;

Canvas.Brush.color:=cyellow;

Canvas.rectangle(xc-30,Yc-30,xc+30,Yc+30);

    prosedür Elips(x1,y1,x2,y2:tamsayı); - belirtilen koordinatlara sahip bir dikdörtgenin içine yazılmış bir elips çizer.

Örnek : PaintBox bileşenine yazılı bir elips çizin.

PaintBox1.Canvas.Pen.Width:=4; //çizgi genişliği = 4 piksel

PaintBox1.Canvas.Ellipse(0,0, PaintBox1.ClientWidth, PaintBox1.ClientHeight);

    prosedür Çokgen(); - bir koordinat dizisi tarafından belirtilen kapalı bir çokgen çizer.

Örnek : şeklin kenarlarının orta noktalarını birleştiren içi dolu bir baklava çizin

Var Xc,Yc:tamsayı; // formun istemci alanının merkezinin koordinatları

Xc:=İstemci Genişliği div 2;

Xy:=İstemci Yüksekliği div 2;

Canvas.Fırça.Renk:=Rgb(275,140,70); // turuncu renk gölgeleme

Canvas.Polygon();

son;

    Prosedür Yay(x1,y1,x2,y2,x3,y3,x4,y4:tam sayı); - bir dikdörtgen (x1, y1, x2, y2) ile sınırlanan bir elipsin yayını görüntüler. Yay, koordinatları (x3,y3) olan bir noktadan koordinatları (x4,y4) olan bir noktaya kadar görüntülenir. aykırı saat yönünde.

Örnek : bileşenin üst tarafının ortasını birleştiren bir elips yay çizin
PaintBox sağ tarafının ortasıyla.

Prosedür Tform1.Button1Click(Sender:Tobject);

Var X3,y3,x4,y4: Tamsayı;

PaintBox1 ile şunu yapın:

Kanvas.Kalem.Renk:= clBeyaz;

Kanvas.Kalem.Genişliği:= 3;

Canvas.rectangle(0, 0, PaintBox1.ClientWidth, PaintBox1.ClientHeight);

X3:= ClientWidth div 2;

X4:= İstemci Genişliği;

Y4:= İstemci Yüksekliği bölüm 2;

Kanvas.Kalem.Renk:= clBordo;

Canvas.ARC(0, 0, PaintBox1.ClientWidth, PaintBox1.ClientHeight, x3, y3, x4, y4);

Son;

    prosedür Akor(x1,y1,x2,y2,x3,y3,x4,y4:tam sayı); - bir akor çizer - elipsin 2 noktasını birleştiren düz bir çizgi: koordinatları (x3, y3) olan bir nokta ile (x4, y4) noktası.

Örnek : ARC yöntemi için verilen örnekte Chord yöntemini değiştirin ve aşağıdaki sonucu elde edin.

    prosedür Turta(x1,y1,x2,y2,x3,y3,x4,y4:tam sayı); - elipsin merkezini (x3,y3) ve (x4,y4) koordinatlarına bağlayan bir elips parçası çizer.

Örnek : ARC yöntemi için verilen örnekte PIE yöntemini hayal edin ve bu sonucu elde edin.

    prosedür Metin Çıkışı(x,y:tamsayı;Metin:dize); - Metin parametresinde iletilen dizenin, sol üst köşesi belirtilen bir dikdörtgene çıktısını verir x,y koordinatları. Yazı tipi özellikleri Yazı Tipi aracı tarafından ayarlanır.

Örnek : Çizilen grafiğin adını formun altına yazın.

Kanvas.Yazı Tipi.Yüksekliği:=20 ; //karakter yüksekliği 20 piksel

Canvas.Font.Renk:=clblue;

Canvas.TextOut(10, ClientHeight-24, 'SIN(X) fonksiyonunun grafiği');

Grafik bileşenleri

Delphi, geliştirmenize olanak tanıyan bir dizi hazır bileşen sunar Kullanıcı arayüzü. Bu bileşenler sayfada bulunur Ek olarak Ve Sistem bileşen paletleri.

BileşenResim(SınıfZamanlama) – harici dosyalarda saklanan grafik görüntüleri uzantılarla görüntülemek için oluşturulmuştur:

    Ico(simge, piktogram);

    Bmp (bit eşlem, bit eşlem);

    Wmf, .emf (meta dosyası);

    Jpg, .jpeg (JPEG sıkıştırılmış görüntü).

Temel özellikler :

Otomatik boyutlandır:boolean – true olarak ayarlandığında bileşen, boyutlarını yüklenen görüntünün boyutuna göre ayarlar; varsayılan yanlıştır.

Uzatmak:boolean – eğer doğruysa, yüklenen değer bileşenin tüm alanını kaplar; varsayılan yanlıştır.

Tuval:Tcanvas – programın yürütülmesi sırasında bileşenin içini çizmek için kullanılır.

Resim:Tpicture - Bileşene yerleştirilen görüntüyü tanımlar.

Temel yöntemler sınıf Resim:

Prosedür Dosyadan yükle(Dosya adı:string); - Dosya adı adlı dosyadaki bir görüntüyü bileşene yükler.

Prosedür Dosyaya kaydet(Dosya adı:string); -bileşendeki görüntüyü Dosya adı adlı bir dosyaya kaydeder.

BileşenBoya Kutusu - Dikdörtgen bir çizim alanı tanımlar. Ana özellik Tuval Tcanvas sınıfının tüm yöntemleri mevcuttur, bağımsız özellikleri yoktur.

Örnek : PaintBox1 bileşenine yazılı sarı bir elips çizin.

Prosedür Tform1Button1Click(gönderen:Tobject);

PaintBox1.Canvas ile yapın

Fırça.Renk:=cyellow;

Ellipse(0,0,PaintBox1.ClientWidth, PaintBox1.ClientHeight);

son;

BileşenBitBtn tarama düğmesi

BitBtn düğmesi, standart düğmenin aksine, başlığa (Başlık) ek olarak özellik tarafından belirtilen bir resmi de içerebilir. Glif. Önceden tanımlanmış özelliklere sahip (belirli bir resim, yazı ve amaç ile) bir dizi standart BitBtn düğmesi vardır - standart düğmenin türü özellik aracılığıyla seçilir Tür. Tür=(bkÖzel, bkAbort,bkİptal, bkClose …)

Görev No.1

Ana formda iki Görüntü bileşeni ve 4 düğme ("Görüntü yükle", "Geometrik şekil oluştur", "Rengi değiştir", "Çıkış") içeren bir uygulama oluşturun ve şunları yapmanızı sağlar:

a) kullanıcı tarafından seçilen Image1 bileşenine yükleyin grafik görüntü böylece görüntü, Görüntü bileşeninin tüm alanını kaplar.

b) Image1 bileşeninin altında “Bu bir dosyadaki resimdir.

(bileşenin boyutunun ve konumunun ölçümü içinResim1 yazıt olmalıdır
kesinlikle bileşenin altında bulunur).

c) Image2 bileşeninin içine geometrik bir şekil çizin: Image bileşeninin ortasını Image bileşeninin alt ve sağ taraflarının ortalarına bağlayan içi dolu bir elips parçası.

(bileşenin boyutunda ve konumunda herhangi bir değişiklik içinResim2 şekil doğru şekilde oluşturulmalıdır, yani. bileşenle ilgili spesifikasyona göreResim2)

d) ColorDialog bileşenini kullanarak, kullanıcının isteği üzerine Image2'de çizilen bir şeklin çizgisinin rengini değiştirmek.

Görev No.2

Görüntü bileşenine rastgele birkaç etiket (örneğin, "Yaşasın!" kelimesi) yerleştirmenize olanak tanıyan bir uygulama oluşturun. Uygulamak için bir jeneratör kullanın rastgele numaralar Rastgeleleştirme ve Rastgele işlevi.

Resim bileşeninin boyutları, Resimde görüntülenen kelime ve kelime sayısı kullanıcı tarafından girilmelidir.

Görev No.3

ListBox'tan geometrik bir şeklin adını seçmenize ve seçilen şekli Görüntü bileşeninde çizmenize olanak tanıyan bir uygulama oluşturun. Şeklin rengi RadioGroup bileşeninden seçilir.

Görev No.4

PaintBox1 bileşenini 4 eşit parçaya bölün, her parçayı farklı bir renge boyayın, örneğin: mavi, sarı, yeşil, kırmızı.

PaintBox1'in her köşesinin yanına, o köşenin koordinatlarını yazın (PaintBox1 bileşeninin bulunduğu formun orijinine göre).

Görev No.5

İLE

Radiogroup1 bileşeninden çizilecek şeklin türünü, Radiogroup2 bileşeninden dolgu rengini seçin ve seçilen şekli Image bileşeninde çizin.

Görev No. 6

Kullanıcının PaintBox1 bileşeninin boyutlarını (piksel cinsinden) ayarlamasına olanak tanıyan bir uygulama oluşturun.

PaintBox1 bileşenini 2 eşit parçaya bölün, her parçanın içine kullanıcı tarafından ColorDialog'da seçilen renkle doldurulmuş bir elips çizin.

Görev No.7

İLE Aşağıdakileri yapmanıza olanak tanıyan bir uygulama oluşturun:

ListBox'tan geometrik bir şeklin adını seçin ve seçilen şekli Görüntü bileşeninde çizin. RadioGroup bileşeninde Evet seçilirse şekil, kullanıcı tarafından ColorDialog bileşeninde seçilen renkle doldurulmalıdır.

Görev No.8

Kullanıcının PaintBox1 bileşeninin boyutlarını (piksel cinsinden) ayarlamasına olanak tanıyan bir uygulama oluşturun.

PaintBox1 bileşenini 4 eşit parçaya bölün, her parçanın içine farklı bir geometrik şekil (elips, eşkenar dörtgen, üçgen ve dikdörtgen) çizin. Her şeklin rengi, ColorGrid'de kullanıcı tarafından seçilir.

Görev No. 9

ListBox'tan geometrik şeklin adını seçin
şekiller (elips, eşkenar dörtgen, dikdörtgen) ve çizim
Görüntü bileşeninde seçilen şekil. Konum
Görüntü bileşenindeki şekiller (I çeyrek, II çeyrek,

III veya IV çeyrek) ve şeklin rengi seçilir
RadioGroup bileşenlerinden.

Görev No. 10

Kullanıcının PaintBox1 bileşeninin boyutlarını (piksel cinsinden) ayarlamasına olanak tanıyan bir uygulama oluşturun.

Yan boyutun metin olamayacağını, negatif sayı olamayacağını ve daha küçük form boyutunu aşamayacağını unutmayın.

PaintBox1 bileşenini 4 eşit parçaya bölün, her parçanın içine kullanıcı tarafından Combobox'ta seçilen geometrik bir şekil (elips, eşkenar dörtgen, üçgen ve dikdörtgen) çizin. Şeklin rengi ColorBox'ta kullanıcı tarafından seçilir.

Görev No. 11

Aşağıdakileri yapmanıza olanak tanıyan bir uygulama oluşturun:

Radiogroup bileşeninden çizimin konumunu seçin

sağ üçgenin Görüntü bileşeninde,
şeklin gölgeleme rengi veya anahat rengi;
Onay Kutusu düğmelerini etkinleştirme. Şununla renk seçin:
ColorGrid bileşeni.

Görev No. 12

Kullanıcının PaintBox1 bileşeninin boyutlarını (piksel cinsinden) ayarlamasına olanak tanıyan bir uygulama oluşturun.

Yan boyutun metin olamayacağını, negatif sayı olamayacağını ve daha küçük form boyutunu aşamayacağını unutmayın.

PaintBox1 bileşenini 2 eşit parçaya bölün, parçalardan birinin içine kullanıcı tarafından Combobox'ta seçilen geometrik bir şekil (elips, eşkenar dörtgen, üçgen ve dikdörtgen) çizin. Şeklin rengi ColorBox'ta kullanıcı tarafından seçilir.

Örneğin formun rengini şu şekilde değiştirebilirsiniz:

form1.Renk:= RenkKutu1.Renkler;

Görev No. 13

Aşağıdakileri yapmanıza olanak tanıyan bir uygulama oluşturun:

a) Şeklin ortasına bir kare çizin (karenin kenar boyutu kullanıcı tarafından girilir). Yan boyutun metin olamayacağını, negatif sayı olamayacağını ve daha küçük form boyutunu aşamayacağını unutmayın.

b) Onay Kutusu düğmelerinin dahil edilmesine bağlı olarak kareyi bir veya ikiye bölün ve ortaya çıkan her üçgeni farklı bir renge boyayın. Renk seçimi kullanıcı tarafından yapılır.

Görev No. 14

Kullanıcının PaintBox1 bileşeninin boyutlarını (piksel cinsinden) ayarlamasına olanak tanıyan bir uygulama oluşturun.

Yan boyutun metin olamayacağını, negatif sayı olamayacağını ve daha küçük form boyutunu aşamayacağını unutmayın.

PaintBox1 bileşenini 2 eşit parçaya bölün, bir parçanın içine bir eşkenar dörtgen, diğer parçanın içine ise herhangi bir üçgen çizin. Şeklin rengi ColorBox'ta kullanıcı tarafından seçilir.

Örneğin formun rengini şu şekilde değiştirebilirsiniz:

form1.Renk:= RenkKutu1.Renkler;

Görev No. 15

Aşağıdakileri yapmanıza olanak tanıyan bir uygulama oluşturun:

a) Görüntü bileşeninin boyutlarını yatay ve dikey olarak kullanıcının klavyeden girdiği sayıyla aynı ve eşit olacak şekilde ayarlayın;

(Yan boyutun yazı olmaması, negatif sayı olmaması ve daha küçük form boyutunu aşmaması şartıyla)

b) Görüntü bileşenini iki mavi çizgiyle 4 eşit kareye bölün;

c) ortaya çıkan her karenin içine, içine yazılı bir daire çizin (kullanıcının, renk seçimi iletişim kutusu aracılığıyla dairelerin rengini seçmesine izin verin).

Görev No. 16

Kullanıcının PaintBox1 bileşeninin boyutlarını (piksel cinsinden) ayarlamasına olanak tanıyan bir uygulama oluşturun.

Yan boyutun metin olamayacağını, negatif sayı olamayacağını ve daha küçük form boyutunu aşamayacağını unutmayın.

PaintBox1 bileşenini 9 eşit parçaya bölün ve elde edilen her dama tahtası dikdörtgenini boyayın. Dolgu rengi, ColorBox'ta kullanıcı tarafından seçilir.

Örneğin formun rengini şu şekilde değiştirebilirsiniz:

form1.Renk:= RenkKutu1.Renkler;

Görev No. 17

Forma iki Görüntü bileşeni ve dört düğme yerleştirin: Çizgi Rengi, Dolgu Rengi, Tamam ve Çıkış; ve Düzenle bileşeni.

Tamam butonuna tıkladığınızda Resim1'de kenarı X olan bir kare, Resim2'de ise kenarları eşit ve her birinin uzunluğu X olan bir dik üçgen çizilir.

Üçgenin tepe noktası Resim2'nin orijini ile çakışmaktadır. Karenin köşelerinden biri Resim1'in orijinine denk geliyor.

Tamam düğmesi yalnızca şekli çizmek için bir çizgi rengi ve dolgu rengi seçtiğinizde kullanılabilir hale gelir.

X – Rastgele işlevini kullanarak rastgele seçim yapar ve X'in değeri Düzenleme bileşeninde görüntülenmelidir.

Görev No. 18

Kullanıcının PaintBox1 bileşeninin boyutlarını (piksel cinsinden) ayarlamasına olanak tanıyan bir uygulama oluşturun.

PaintBox1 bileşenini 4 eşit parçaya bölün; kullanıcı tarafından seçilen parçanın içinde, boyutu kullanıcı tarafından belirlenen içi dolu bir daire oluşturulmalıdır. Kullanıcı, ColorBox'ta dolgu rengini seçer.

Örneğin formun rengini şu şekilde değiştirebilirsiniz:

form1.Renk:= RenkKutu1.Renkler;

Grafik bilgilerini görüntülemek için bileşenlerin listesi

Grafik bilgilerini görüntülemek için Delphi kütüphanesi, listesi Tablo 4.1'de verilen bileşenleri sağlar.

Tablo 4.1 Grafik bilgi ekranı bileşenleri Piktogram

Bileşen

Sayfa

Tanım

Resim

Grafikleri görüntülemek için kullanılır: simgeler, bitmapler ve meta dosyalar.


PaintBox (çizim penceresi)

Form üzerinde çizim yapabileceğiniz bir alan oluşturmak için kullanılır.


DrawGrid (çizim tablosu)

Metin olmayan verileri satır ve sütunlarda görüntülemek için kullanılır.


Grafik (grafikler ve grafikler)

Bileşen, çizelgeler ve grafikler oluşturmak için kullanılan TChart bileşen ailesine aittir.


Ayrıca bir Kanvas üzerindeki herhangi bir Ekran grafiğinin yüzeyinde grafik bilgilerini görüntüleyebilir ve girebilirsiniz.

Tuval Tuval bir bileşen değildir, bu nedenle kesinlikle bu kitabın kapsamında değerlendirilmemelidir. Ancak pek çok bileşenin, özellikle de formların bir taslağı olduğu ve bu taslağın çeşitli grafik bilgileri görüntüleme yeteneği sağladığı için, yine de taslağa ilişkin bazı başlangıç ​​bilgilerinin verilmesi tavsiye edilir.

Kanvas, bitmiş görüntüleri çizebileceğiniz veya görüntüleyebileceğiniz bir bileşenin alanıdır. Delphi grafiklerini büyük ölçüde basitleştiren özellikler ve yöntemler içerir. Sistemle olan tüm karmaşık etkileşimler kullanıcı için gizlidir, bu nedenle bilgisayar grafikleri konusunda hiç tecrübesi olmayan bir kişi Delphi'de çizim yapabilir.

Taslaktaki her noktanın koordinatları vardır X Ve e. Kanvas koordinat sisteminin kökeni, Delphi'nin başka yerlerinde olduğu gibi, kanvasın sol üst köşesindedir. Koordinat X soldan sağa hareket ettikçe artar ve koordinat e- yukarıdan aşağıya doğru hareket ederken. Koordinatlar piksel cinsinden ölçülür. Piksel, bir tasarım yüzeyinin manipüle edilebilecek en küçük öğesidir. Bir pikselin en önemli özelliği rengidir.

Tuvalin özelliği var Piksel. Bu özellik, tuvalin renklerinden sorumlu olan iki boyutlu bir dizidir. Örneğin, Tuval. Piksel soldan 10. ve üstten 20. pikselin rengiyle eşleşir. Bir piksel dizisine herhangi bir özellik gibi davranabilirsiniz: piksele yeni bir değer vererek rengi değiştirin veya içinde saklanan bir değerden rengini belirleyin. Örneğin, Tuval. Piksel:=0 veya Tuval. Piksel:=clSiyah- bu pikseli siyaha ayarlamak içindir.

Mülk Piksel tuval üzerine çizim yapmak için kullanılabilir. Formun ana hatlarına bir sinüzoidin piksel piksel grafiğini çizmeye çalışalım. Bunu yapmak için form olay işleyicisinde Boyada(çizim) aşağıdaki kodu ekleyebilirsiniz:

TForm1. FormPaint(Gönderen: TObject);

var,Y:gerçek; // fonksiyon koordinatları,PY: uzunlamasına; // piksel koordinatları

başlamak:=clBeyaz;

için PX:=0 ileİstemci Genişliği Yapmak

(X grafik argümanıdır,

:=PX*4*Pi/İstemci Genişliği;:=Sin(X);

(PY - piksel koordinatı,

: =trunc (İstemci Yüksekliği - (Y+1) * İstemci Yüksekliği/2);

(Seçilenin rengini ayarlar

piksel (Parlaklık hakkında). Piksel: = 0;

son;

Bu test uygulamasını çalıştırdığınızda Şekil 4.1 a'da gösterilen sonucu göreceksiniz. Sinüs dalgası grafiği çok iyi olmasa da ortaya çıktı, çünkü bireysel noktalara - piksellere bölünmüştür.

Tuval - sınıf nesnesi TCanvasözelliğini kullanarak grafikler, çizgiler, şekiller çizmenize olanak tanıyan birçok yöntem vardır Dolma kalem- tüy. Bu özellik, bir takım özelliklere sahip olan bir nesnedir. Bunlardan biri zaten bildiğiniz bir mülk. Renk- çizimin uygulandığı renk. İkinci özellik - Genişlik(hat genişliği). Genişlik piksel cinsinden belirtilir. Varsayılan genişlik 1'dir.

Mülk Stil hattın türünü belirler. Bu özellik aşağıdaki değerleri alabilir:

Tuvalin özelliği var KalemPos tip TNoktası(santimetre .). Bu özellik, kalemin tuval koordinatlarındaki geçerli konumunu belirler. Kalemi çizgi çizmeden hareket ettirmek, örn. değiştirmek KalemPos kanvas yöntemiyle üretilen Taşı(X,Y). Burada ( X, Y) - kalemin hareket ettiği noktanın koordinatları. Bu geçerli nokta, yöntemin başlangıç ​​noktası olur. Satıra(X,Y) koordinatları olan bir noktaya bir çizgi çizebilirsiniz ( X, Y). Bu durumda mevcut nokta hattın bitiş noktasına taşınır ve yeni bir çağrı yapılır. HatTo bu yeni akım noktasından bir nokta çizecektir.

Önceki örnekteki sinüs grafiğini kalemle çizmeye çalışalım. Bu durumda form olay işleyicisi Boyadaşöyle görünebilir:

prosedür TForm1. FormPaint(Gönderen: TObject);

var,Y:gerçek; // fonksiyon koordinatları,PY: uzunlamasına; // piksel koordinatları

başlamak: =clBeyaz;. MoveTo(0,ClientHeight div 2);

için PX: =0 ileİstemci Genişliği Yapmak

(X grafik argümanıdır,

РХ koordinatına sahip piksele karşılık gelir):=PX*4*Pi/İstemci Genişliği;:=Sin(X);

(PY - piksel koordinatı,

Y koordinatına karşılık gelir):=trunc(İstemci Yüksekliği - (Y+1) * İstemci Yüksekliği/2);

(Grafik üzerine bir çizgi çizilir). LineTo(PX,PY);

Bu versiyondaki uygulamanın sonucunu Şekil 4.1 b'de görebilirsiniz. Gördüğünüz gibi grafiklerin kalitesi önemli ölçüde arttı.

Kalem sadece düz çizgiler değil aynı zamanda şekiller de çizebilir. Kalemi kullanan tuval yöntemlerinin tam listesi için Delphi'nin yerleşik yardımına bakın. Şimdilik örnek olarak bunlardan yalnızca birini vereceğiz - Elips, bir elips veya daire çizer. Olarak beyan edilir

prosedür Elips(X1, Y1, X2, Y2: Tamsayı);

parametreler nerede X1, X2, Y1, Y2 Bir elips veya daireyi tanımlayan bir dikdörtgenin koordinatlarını belirleyin. Örneğin, operatör

Elips(10, 40, 20, 50);

çapı 10 ve merkezi koordinatları (15, 45) olan bir daire çizecektir.

Genel durumda şekiller boş olarak çizilmez ancak canvas özelliği kullanılarak doldurulur. Fırçalamak- fırçalamak. Mülk Fırçalamak bir takım özelliklere sahip olan bir nesnedir. Mülk Renk dolgu rengini tanımlar. Mülk Stil dolgu desenini (gölgeleme) tanımlar. Varsayılan değer Stil eşittir bsKatı katı renklendirme anlamına gelir Renk.

Kalemde Dolma kalem Henüz dikkate almadığımız bir mülk daha var. Bu mülk Mod(mod). Varsayılan değer Mod = pmKopyala. Bu, çizgilerin özellikte belirtilen renkle çizildiği anlamına gelir. Renk. Ancak yalnızca rengin dikkate alınmadığı başka modlar da mümkündür Renk, aynı zamanda karşılık gelen arka plan piksellerinin rengi. Bu modlardan en ilginç olanı pmNotXor- ters dışlayıcı VEYA kullanarak arka planla ekleme. Bu mod ayarlanırsa, aynı şeklin tuval üzerinde aynı yere tekrar çizilmesi, önceden çizilen görüntüyü kaldırır ve şeklin ilk görüntüsünden önceki piksel renklerini geri yükler.

Modun bu özelliği pmNotXor basit animasyonlar oluşturmak için kullanılabilir. Bir şey çizmeniz, ardından çizdiğiniz şeyi silmeniz, biraz değiştirerek yeniden çizmeniz yeterlidir - ve çizim canlanmış gibi görünecektir.

Kendiniz basit bir animasyon yapmayı deneyin - hareketli bir daire. Yeni bir uygulama başlatın ve şuraya gidin: uygulama reklam ekle

X,Y: tamsayı;

Bu küresel değişkenleri tanıtacak X Ve e- mevcut görüntü koordinatları.

Form olayında Boyada ifadeleri ekle

Fırçalamak. Renk:=clBeyaz;:=clBeyaz;. Dolma kalem. Mod:=pmNotXor;

Bu operatörlerden ilki fırça rengini beyaza ayarlar Fırçalamak. Bu, dairenizin içinin beyaza boyanacağı anlamına gelir. İkinci operatör form yüzeyinin arka plan rengini beyaza ayarlar.

Üçüncü operatör kalem modunu ayarlar pmNotXor yenisini çizmeden önce eski resmi silmenize olanak tanır.

En basit animasyonun bile senkronizasyona ihtiyacı vardır. Aksi halde hareketin hızı bilgisayarın hızına göre belirlenecektir. Bu nedenle bileşeni forma aktarın Zamanlayıcı- Sistem sayfasından zamanlayıcı. Bu bileşen bölüm 5.7'de açıklanmaktadır. .

Oradan izleyebilirsin Detaylı Açıklama. Şimdilik özelliğini ayarlayın Aralıkörneğin 30'a eşittir (bu, milisaniye cinsinden maruz kalma süresidir, ancak gerçek zamanlı deklanşör hızı daha uzun olacaktır - bkz. bölüm 5.7) ve özelliği ayarlayın Etkinleştirilmiş eşit YANLIŞ(bu, uygulama başlatıldığında zamanlayıcının otomatik olarak başlamayacağı anlamına gelir).

Bu bileşenin olay işleyicisinde Açma Zamanlayıcısı ifadeleri ekle

//Önceki resmi sil. Elips (X-5, Y, X+5, Y-1Q);(X);

// Yeni bir resim çiz. Elips (X-5, Y, X+5, Y-10);

// Formun sonuna gelindiğinde dur

eğer(X >= ClientWidth-20) Daha sonra. Etkin: = yanlış;

Bu operatörlerden ilki daha önce çizildiği yere bir daire çizer; önceki görüntüyü siler.

Son operatör görüntüyü formun kenarında durdurur.

Şimdi forma bir düğme ekleyin Düğme ve operatörleri tıklama işleyicisine yerleştirin

X: =10;: =100;. Elips (X-5, Y, X+5, Y-10); Etkin: =doğru;

İlk iki operatör dairenin başlangıç ​​koordinatlarını belirtir. Üçüncü operatör daireyi başlangıç ​​konumunda çizer ve dördüncü operatör zamanlayıcıyı başlatır.

Uygulamayı yayınlayın, çalıştırın, düğmeye tıklayın. Şekil boyunca soldan sağa doğru hareket eden bir daire görüntüsü göreceksiniz. Daha sonra hayal gücünüzü kullanın ve pek ilgi çekici olmayan bu uygulamayı daha heyecan verici bir şeye dönüştürün.

Kanvas yalnızca programlı olarak oluşturulan görüntüleri değil aynı zamanda grafik dosyalarında saklanan görüntüleri de görüntüleyebilir. Yalnızca tuvalin kendisinde bir dosyadan resim yüklemek için bir yöntem yoktur. Bu nedenle dosyanın, grafik dosyalarından bilgi alabilen başka bir grafik nesnesine yüklenmesi gerekir. Daha sonra tuval yöntemini kullanarak görüntüyü bu nesneden tuvale yeniden yazın. Çizmek. Açıklaması:

Draw(X, Y: Tamsayı; Grafik: TGrafik);

İşte parametreler X Ve e tuval üzerindeki görüntünün sol üst köşesinin koordinatlarını belirlemek, Grafik- bilgileri depolayan bir nesne. Böyle bir nesne örneğin şu türden bir nesne olabilir: TBit Haritası, bit matrislerini depolamak için tasarlanmıştır. Bütün bunların pratikte nasıl göründüğünü görelim.

Yeni bir uygulama açın, bir bileşeni forma sürükleyin OpenPictureDialogİletişim Kutuları sayfasından (bu, grafik dosyalarını açmak için kullanılan iletişim kutusunun bir bileşenidir - bkz. bölüm 8.2) ) ve düğmesi Düğme. Yer OpenPictureDialog Bu bileşen görsel olmadığından formun herhangi bir yerine gidin ve düğmeyi formun altına yerleştirin. Düğme tıklama işleyicinize aşağıdaki kodu ekleyin:

prosedür TForm1. Button1Click(Gönderen: TObject);

var: TBitMap;

// Kullanıcı seçimi grafik dosyası

eğer OpenPictureDialog1. Uygulamak Daha sonra

// TBitMap türünde bir BitMap nesnesi oluşturun: =TBitMap. Yaratmak;

// Resmi form tuvaline aktarıyoruz. Draw(10, 10, BitMap);

//BitMap nesnesini yok ediyoruz. Özgür;

son;

Bu kod geçici bir tür nesnesi oluşturur TBit Haritasıİsim ile Bit Haritası. Daha sonra bir grafik dosyasını açmak için iletişim kutusu çağrılır OpenPictureDialog1 ve kullanıcı bir dosya seçmişse dosya şuraya indirilir: Bit Haritası yöntem Dosyadan yükle. Daha sonra yöntemi kullanarak Çizmek yüklenen görüntü tuval üzerine sol üst köşedeki (10,10) koordinatların bulunduğu alana kopyalanır. Bundan sonra geçici nesne Bit Haritası yok edildi.

Uygulamanızı başlatın ve düğmesine tıklayın. Her türlü grafik dosyasını yükleyebileceğinizi göreceksiniz. bmp ve formun ana hatlarında görüntülenecektir (bkz. Şekil 4.2 a). Grafik dosyalarını Görüntüler dizininde bulabilirsiniz. Delphi 5 ve 4'te genellikle bir dizinde bulunur. \program files\Ortak Dosyalar\Borland Paylaşılan. Delphi 3'te bir dizinde bulunur. \program files\Borland\Delphi 3 ve Delphi 1'de - Delphi 16 dizininde. Images dizininde, özellikle, Şekil'deki örnekte yüklenen dosyayı saklayan \Images\Splash\16Color\ alt dizini vardır. 4.2

Grafik dosyalarını görüntülemek için iyi bir uygulama oluşturdunuz. Ama şimdi en büyük dezavantajını görmeye çalışalım. Başvurunuzu kapatmadan başka bir programa gidin, örneğin Delphi'ye dönün. Daha sonra hiçbir şey yapmadan çalışan uygulamanıza geri dönün. Girdiğiniz program penceresi uygulamanızın penceresini tamamen kapatmışsa, geri döndüğünüzde penceredeki resmin kaybolduğunu göreceksiniz. Uygulama pencereniz yalnızca kısmen örtüşüyorsa, uygulamanıza geri döndüğünüzde Şekil 4.2 b'de gösterilene benzer bir sonuç görebilirsiniz.

Başka bir uygulamanın penceresi geçici olarak sizin uygulamanızın penceresiyle örtüşürse form taslağı üzerine çizilen görüntünün bozulduğunu görüyorsunuz. Bakalım bu dezavantajı nasıl ortadan kaldırabiliriz.

Bir pencere tıkanmışsa ve görüntü bozulmuşsa, işletim sistemi uygulamaya ortamda bir şeyin değiştiğini ve uygulamanın uygun eylemi yapması gerektiğini bildirir. Bir pencere güncellemesi gerektiğinde, bunun için bir etkinlik oluşturulur Boyada. Bu olayın işleyicisinde (bizim durumumuzda form olayı), görüntüyü yeniden çizmeniz gerekir.

Yeniden çizim yapılabilir Farklı yollar uygulamaya bağlı olarak. Örneğimizde bir değişken bildirmek mümkün olacaktır. Bit Haritası(Şebeke var BitMap: TBitMap) yukarıdaki prosedürün ötesinde, ör. Bu değişkeni doğrudan bölüme yerleştirerek global hale getirin uygulama. Şebeke BitMap. Özgür form olay işleyicisine taşınabilir Yok Edildiğinde, uygulama kapatıldığında meydana gelir. Daha sonra uygulamanızın tüm yürütülmesi sırasında bileşendeki görüntünün bir kopyasına sahip olacaksınız. Bit Haritası ve sadece olay işleyicisine girmeniz gerekiyor Boyada formda yalnızca bir operatör vardır:

Draw(10, 10, BitMap);

Bunu yaptığınızda pencerelerin çakışması nedeniyle formdaki görüntünün bozulmadığını göreceksiniz.

Ele alınan yönteme ek olarak Çizmek taslakta ayrıca bir kopyalama yöntemi de var KopyalaDüzey:

CopyRect(Dest: TRect; Canvas: TCanvas; Kaynak: TRect);

Yöntem belirtilen parametreyi kopyalar Kaynak görüntü kaynağı tuvalindeki görüntü alanı Tuval belirtilen parametreye Hedef bu tuvalin alanı. Tip TRect, dikdörtgen alanları karakterize etme Kaynak Ve Hedef, daha önce bölüm 3.2'de açıklanmıştır .

Örneğin, operatör

CopyRect(MyRect2, Bitmap.Canvas, MyRect1);

alandaki form taslağını kopyalar MyRect2 alandan görüntü MyRect1 bileşen tuvali Bit eşlem.

Kopyalama yöntemi KopyalaDüzeyözellik tarafından belirtilen modda gerçekleştirilir Kopyalama Modu. Varsayılan olarak bu özellik şu değere sahiptir: cmSrcCopy, bu sadece daha önce alanda bulunan görüntünün değiştirilmesi anlamına gelir Hedef, kopyalanan görüntüye. Diğer olası değerler Kopyalama Modu görüntüleri birleştirmenize izin verir, ancak bunların değerlendirilmesi bu kitabın kapsamı dışındadır.

Tuval üzerinde grafik bilgilerinin görüntülenmesiyle ilgili bu temel bilgilerle kendimizi sınırlayacağız. Bölüm 3.2'de metnin ana hatlarına çıktısı hakkında bilgi verildi. Genel olarak tuval, daha birçok özellik ve yönteme sahip karmaşık bir nesnedir. Ancak bu, bu kitabın kapsamı dışında daha geniş bir tartışmayı gerektirmektedir. Delphi Hakkında Her Şey serisinin bir sonraki kitabında bu konular daha ayrıntılı olarak ele alınacak.

özelliğine sahip bir pencere bileşeni Tuval- tuval.

Image ve PaintBox bileşenleri

Bileşenler Resim Ve Boya Kutusu Bölüm 4.2'de açıklandığı gibi, üzerine görüntülerin yazılabileceği bir tuval ile sınırlı bir yüzeyi temsil eder. . Bu durumda bileşen Boya Kutusu Açıkçası tuval üzerine form çizmeye kıyasla yeni bir şey sağlamaz. Üstüne çizmek Boya Kutusu Bir form yerine, pencere alanında bir veya daha fazla çizimin düzenlenmesinde belki bir miktar rahatlama dışında hiçbir avantajı yoktur.

Ancak bu yeteneklere ek olarak bileşen ResimÇalışmanıza izin veren özellikler var çeşitli türler grafik dosyaları Üç tür dosyayı destekler - bit matrisleri, simgeler ve meta dosyalar. Her üç dosya türü de görüntüleri depolar; fark yalnızca bunların dosyaların içinde saklanma biçiminde ve bunlara erişim araçlarında yatmaktadır. Bit matrisi (uzantısı . bmp) görüntüdeki her pikselin rengini görüntüler. Bu durumda bilgi, herhangi bir bilgisayarın, kendi konfigürasyonuna karşılık gelen çözünürlük ve renk sayısı ile bir görüntüyü görüntüleyebileceği şekilde saklanır.

Piktogramlar (uzantısı . ico) küçük bit matrislerdir. Genellikle hızlı düğmelerde, menü öğelerinde, uygulama simgelerini temsil etmek için kullanılırlar. çeşitli listeler. Görüntüleri simgelerde saklama yöntemi, bilgiyi bit matrislerinde saklamaya benzer, ancak farklılıklar da vardır. Özellikle simge ölçeklendirilemez; oluşturulduğu boyutta kalır.

Meta dosyalar görüntüyü oluşturan bitlerin sırasını saklamaz, ancak görüntünün nasıl oluşturulduğuna ilişkin bilgileri saklar. Görüntüyü yeniden oluştururken tekrarlanabilecek çizim komutları dizisini saklarlar. Bu, bu tür dosyaların genellikle bit matrislerinden daha kompakt olmasını sağlar.

Bileşen Resim belirtilen tüm türlerdeki grafik dosyalarında bulunan bilgileri görüntülemenizi sağlar. Bu onun mülkiyeti sayesinde elde edilir. Resim- nesneyi yazın TResim.

Şekil 4.3 Resim Düzenleyici Penceresi


Bu özelliği tanımak için yeni bir uygulama açın ve bir bileşeni forma sürükleyin Resim. Uzat veya özelliğini ayarla Hizala eşit alİstemci böylece formun tüm müşteri alanını kaplar. Özelliğin yanında üç nokta bulunan düğmeye tıklayın Resim Nesne Denetçisi penceresinde veya yalnızca üzerine çift tıklayın. Resim. Özelliğe yükleme yapmanıza olanak tanıyan Resim Düzenleyici penceresi önünüzde açılacaktır (Şek. 4.3) Resim bazı grafik dosyalarını (Yükle düğmesi) ve ayrıca kaydedin açık dosya yeni bir ad altında veya yeni bir dizinde. Grafik dosyasını yüklemek için Yükle'ye tıklayın. Şekil 4.4'te gösterilen grafik dosyasını açmak için bir pencere göreceksiniz. Grafik dosyaları listesinde imleci hareket ettirdiğinizde içerdikleri resimler sağ pencerede görüntülenir ve bunların üzerinde resmin boyutunu belirten sayılar bulunur. . İhtiyacınız olan herhangi bir grafik dosyası türünü seçebilirsiniz. Delphi ile birlikte verilen grafik dosyalarını Görseller dizininde bulabileceğinizi hatırlatalım. Delphi 5 ve 4'te genellikle bir dizinde bulunur. \program files\Ortak Dosyalar\Borland Paylaşılan. Delphi 3'te bir dizinde bulunur. \program files\Borland\Delphi 3 ve Delphi 1'de - Delphi 16 dizininde. Dosya yüklendikten sonra, Resim Düzenleyici penceresinde ve bileşeninizde Tamam'a tıklayın. Resim Seçtiğiniz resim görüntülenecektir. Uygulamanızı başlatabilir ve hayran kalabilirsiniz. Ancak uygulamayı çalıştırmadan zaten resmi görüyorsunuz.

Tasarım süreci sırasında bir dosyadaki görüntüyü bir bileşene yüklediğinizde Resim yalnızca görüntülemekle kalmaz, aynı zamanda uygulamaya da kaydeder. Bu size uygulamanızı ayrı bir grafik dosyası olmadan sunma olanağı sağlar. Ancak daha sonra göreceğimiz gibi, Resim Uygulama çalışırken harici grafik dosyalarını da yükleyebilirsiniz.

Bileşen özelliklerini dikkate almaya dönelim Resim.

Özelliği ayarlarsanız Otomatik Boyutlandır V doğru, ardından bileşen boyutu Resim içine yerleştirilen resmin boyutuna otomatik olarak ayarlanacaktır. Eğer mülk Otomatik Boyutlandır yüklü YANLIŞ ise görüntü bileşene sığmayabilir veya tam tersine bileşenin alanı görüntünün alanından çok daha büyük olabilir.

Başka bir mülk - Uzatmak bileşeni resmin boyutuna göre değil, resmi bileşenin boyutuna göre ayarlamanıza olanak tanır. Düzenlemek Otomatik Boyutlandır V YANLIŞ, bileşenin boyutunu uzatın veya küçültün Resim ve yükle Uzatmak V doğru. Çizimin bileşenin tüm alanını kaplayacağını göreceksiniz, ancak boyutları gerçekçi bir şekilde belirlemek pek mümkün olmadığından Resim resmin boyutuyla tam orantılı olarak görüntü bozulacaktır. Düzenlemek Uzatmak V doğru yalnızca bazı desenler için anlamlı olabilir, ancak resimler için anlamlı olmayabilir. Mülk Uzatmak yeniden boyutlandırılamayan simge resimlerini etkilemez.

Mülk - Merkez, ayarlanır doğru, görüntüyü alana ortalar Resim bileşen boyutu resim boyutundan büyükse.

Bir özelliği daha ele alalım - Şeffaf(şeffaflık). Eğer Şeffaf eşittir doğru, ardından içindeki görüntü Resimşeffaf hale gelir. Bu, görüntüleri üst üste bindirmek için kullanılabilir. İkinci bileşeni forma yerleştirin Resim ve içine başka bir resim yükleyin. Az miktarda doldurulmuş, taslak halinde bir resim çekmeye çalışın. Örneğin, genellikle düğmelerin üzerine yerleştirilenler arasından bir resim çekebilirsiniz, örneğin bir ok (file.\program files\common files\borland paylaşılan\images\buttons\arrow1l.bmp). Seninkini taşı Resim böylece birbirleriyle örtüşecekler ve üst bileşen setinde Şeffaf eşit doğru. Üstteki görüntünün artık alttaki görüntüyü engellemediğini göreceksiniz. Bu özelliğin olası kullanımlarından biri, bir bit matrisi biçiminde yapılmış yazıtların resim üzerine bindirilmesidir. Bu yazıtlar Delphi'de yerleşik olan Image Editor programı kullanılarak yapılabilir.

Lütfen tesisin Şeffaf yalnızca bit matrislerini etkiler. Bu durumda, bit matrisinin sol alt pikselinin rengi varsayılan olarak şeffaf hale getirilir (yani, altında bulunan görüntünün rengiyle değiştirilir).

Tasarım süreci sırasında bir dosyadan görsel yüklemeyi ele aldık. Ama mülk Resim Ayrıca uygulamanın yürütülmesi sırasında her türden grafik dosyasıyla alışverişi organize etmeyi de kolaylaştırır. Böyle bir alışverişin tekniğini açıklamak için öncelikle özelliği daha ayrıntılı olarak ele almalıyız. Resim.

Bu özellik, depolanan grafik nesnesine işaret eden alt özelliklere sahip bir nesnedir. Eğer içindeyse Resim bir bit matrisi saklanır ve özellik tarafından gösterilir Resim. Bit eşlem. Bir simge kayıtlıysa özellik tarafından işaret edilir Resim. Simge. Saklanan meta dosya özelliği ile gösterilir Resim. Meta dosyası. Son olarak, herhangi bir türdeki grafiksel nesne, özellik tarafından belirtilir. Resim. Grafik.

Bir obje Resim ve özellikleri Bit eşlem, Simge, Meta dosyası Ve Grafik dosya okuma ve yazma yöntemlerine sahip olmak Dosyadan yükle Ve Dosyaya kaydet:

prosedür Dosyadan yükle( yapı Dosya adı: sicim);

prosedür Dosyaya kaydet( yapı Dosya adı: sicim);

Özellikler için Resim. Bit eşlem, Resim. Simge Ve Resim. Meta dosyası Dosya formatı nesne sınıfına karşılık gelmelidir: bit matrisi, simge, meta dosyası. Özelliğe bir dosya okurken Resim. Grafik dosya meta dosyası biçiminde olmalıdır. Ve nesnenin kendisi için Resim Okuma ve yazma yöntemleri dosya türüne göre otomatik olarak ayarlanır. Bunu bir örnekle açıklayalım.

Bölüm 4.2'de tartışılan grafik dosyalarını görüntüleme örneğine benzer bir uygulama oluşturalım. Çeşitlilik sağlamak için düğme dışında bir şey kullanarak kontrol edebilirsiniz. Düğme ve menü. Forma bir bileşen yerleştirme Resim. Uzat veya özelliğini ayarla Hizala eşit alİstemci böylece formun tüm müşteri alanını kaplar. Grafik dosyası açma diyalog bileşenini forma sürükleyin OpenPictureDialog(bkz. bölüm 8.2 ). Forma bir ana menü bileşeni de yerleştirin Ana menü(bkz. bölüm 6.1 ) ve içinde bir bölüm ayarlayın - Dosya. Bu bölümün işleyicisinde ifadeyi yazın

(OpenPictureDialog1.Yürüt) Daha sonra. Resim. LoadFromFile(.FileName);

Bu operatör bir grafik dosyasını açmak için bir diyalog çağıracak (bkz. Şekil 4.4) ve onu bileşene yükleyecektir Resim1 Kullanıcı tarafından seçilen bir dosyadan görüntü (bkz. Şekil 4.5). Ayrıca dosya herhangi bir türde olabilir: bit matrisi, simge veya meta dosyası.

Şekil 4.5 Bileşendeki resim Resim bit matrisi (a) ve piktogram (6)



Bu uygulamada yöntem Dosyadan yükle uygulanan Resim1. Resim. Yalnızca bit matris dosyaları açılacaksa dosya yükleme operatörü şununla değiştirilebilir:

Resim. Bit eşlem LoadFromFile(.FileName);

Piktogramlar için bir operatör kullanılabilir. Resim. Simge. LoadFromFile(.FileName);

ve meta dosyalar için - operatör. Resim. Meta dosyası. LoadFromFile(.FileName);

veya. Resim. Grafik. LoadFromFile(.FileName);

Ancak tüm bu durumlarda, dosya formatı amaçlanan formatla eşleşmezse bir hata meydana gelecektir. Yöntem benzer şekilde çalışıyor Dosyaya kaydet uygulanan farkla Resim veya Resim. Grafik herhangi bir formattaki görüntüyü bir dosyaya kaydeder. Örneğin uygulamanızı bir iletişim kutusuyla genişletirseniz Resmi Kaydet İletişim Kutusu(bkz. bölüm 8.2 ), menüdeki Farklı Kaydet bölümüne girin ve operatörü işleyicisine yerleştirin

SavePictureDialog1. Uygulamak Daha sonra. Resim. SaveToFile(SavePictureDialog1.FileName);

daha sonra kullanıcı herhangi bir formattaki görüntüyü yeni bir adla bir dosyaya kaydedebilecektir. Ancak bu durumda gelecekte karışıklığı önlemek için, kaydedilen dosyanın uzantısının yine de kaydedilen görüntünün formatına uygun olması gerekir.

Kaydetme operatörünü şununla değiştirirseniz, program herhangi bir formattaki görüntüler için tamamen aynı şekilde çalışacaktır.

Resim. Grafik. SaveToFile(.FileName);

özelliği kullanmak Resim. Grafik. Ve eğer bileşende saklanan şeyin formatını biliyorsanız Resim görüntüler, ardından yöntemi uygulayabilirsiniz Dosyaya kaydet mülklere Resim. Bit eşlem, Resim. Simge Ve Resim. Meta dosyası.

Değerlendirilen tüm nesneler için Resim, Resim. Bit eşlem, Resim. Simge Ve Resim. Meta dosyası nesne değerlerini atama yöntemleri tanımlanmıştır:

Ata(Kaynak: TPersistent);

Ancak, Bit Haritası, Simge Ve Meta dosyası Yalnızca homojen nesnelerin değerlerini atayabilirsiniz: sırasıyla bit matrisleri, simgeler, meta dosyalar. Heterojen nesnelere değer atamaya çalışırken bir istisna atılıyor EConvertError. Bir obje Resim- evrensel, diğer üç sınıfın herhangi birindeki nesnelerin değerlerine atanabilir. Ve anlamı Resim yalnızca türü, içinde depolanan nesnenin türüyle eşleşen bir nesneye atanabilir.

Yöntem Atamak Pano arabelleğiyle görüntü alışverişi yapmak için de kullanılabilir. Örneğin, operatör

Ata(Görüntü1.Resim);

panoda saklanan görüntüyü panoya kaydedecek Resim1. Benzer operatör

grafik delphi görüntü uygulaması

Resim1. Resim. Ata (Pano);

okumak Resim1 panodaki bir resim. Üstelik herhangi bir resim ve hatta metin olabilir.

Panoyla çalışırken operatöre yapıştırmayı hatırlamanız yeterlidir kullanır modülünüzün modüle bağlantısı Clipbrd. Delphi bu bağlantıyı otomatik olarak eklemez.

Bileşen özelliklerine geri dönme Resim, Şekil 4.5'te gösterilen test uygulamamızın doğasında olan bir dezavantaja dikkat çekebiliriz. Farklı görüntüler yüklerken, uygulama penceresinin boyutu ya çok küçük olabilir ve bu durumda görüntünün yalnızca bir kısmını görürsünüz ya da çok büyük olabilir ve daha sonra resim, formun sol üst köşesine çekici olmayan bir şekilde yerleştirilecek ve çok fazla boş alan bırakılacaktır. Bu dezavantaj, özellikler kullanılarak ortadan kaldırılabilir. Yükseklik(yükseklik) ve Genişlik(genişlik) bileşeni Resim. Mülkiyet ile Otomatik Boyutlandır yüklü doğru boyutlar Resim otomatik olarak yüklenen görselle aynı boyuta ayarlanır. Ve bu boyutlar, formu uygun şekilde yeniden boyutlandırmak için kullanılabilir. Örneğin, bir dosyadan resim yüklemek için kullanılan önceki kod aşağıdaki kodla değiştirilebilir:

OpenPictureDialog1. Uygulamak Daha sonra

başlamak. Resim. LoadFromFile(.FileName); İstemci Yüksekliği: = Resim1. Yükseklik+10; Üst:=Form1. ClientRect. Tepe

+ (Form1. ClientHeight - Image1. Height) div 2;. ClientWidth:=Resim1. Genişlik+10; Sol: = Form1. ClientRect. Sol

+ (Form1.ClientWidth - Image1.Width) div 2;

son;

Bu kod, formun istemci alanının boyutunu bileşenin boyutundan biraz daha büyük olacak şekilde ayarlar. Resim1özelliği sayesinde resmin boyutuna uyum sağlar Otomatik Boyutlandır. Uygulamanızda bu değişiklikleri yapın, çalıştırın ve formun, yüklenen görselin boyutuna otomatik olarak uyum sağladığını görün.

Şekil Bileşeni

Bileşen Şekil yalnızca uygun şekilde gölgelendirilmiş çeşitli geometrik şekilleri temsil ettiğinden, grafik bilgileri görüntüleme aracı olarak yalnızca koşullu olarak sınıflandırılabilir. Bu bileşenin ana özelliği Şekil(form) aşağıdaki değerleri alabilir:

Bu formların örnekleri Şekil 4.7'de gösterilmektedir.

Şekil 4.7 Bileşen Örnekleri Şekil


Bileşenin bir diğer önemli özelliği ise Fırçalamak(fırçalamak). Bu özellik bir tür nesnesidir fırça, özellikle bir dizi alt özelliğe sahiptir: color ( Fırçalamak. Renk) ve stil ( Fırçalamak. Stil) şekli doldurun. Bazı değerlerde doldurma StilŞekil 4.7'de görebilirsiniz. Bileşenin spesifik özelliklerinden üçüncüsü Şekil - Dolma kalem(kalem) çizgi stilini tanımlar. Bu mülk mülk gibidir Fırçalamak Bölüm 4.2'de zaten tartışılmıştı. . Bu özelliklere ilişkin referans verilerini Bölüm 10*'da bulabilirsiniz.

Grafik Bileşeni

Şimdi bileşene bakalım Çizelge. Bu bileşen, çok etkileyici görünen çeşitli çizelgeler ve grafikler oluşturmanıza olanak tanır (Şekil 4.8). Bileşen Çizelge pek çok özelliği, yöntemi, olayı var, dolayısıyla hepsini dikkate alırsak, bütün bir bölümü buna ayırmamız gerekir. Bu nedenle kendimizi yalnızca temel özellikleri dikkate alarak sınırlayacağız. Çizelge. Gerisini Delphi'nin yerleşik yardımında bulabilir veya diyagramları deneyerek deneyebilirsiniz.

Bileşen Çizelge nesnelerin bulunduğu bir kaptır Seri tip TChart Serisi- farklı görüntüleme stilleri ile karakterize edilen veri serisi. Her bileşen birkaç seriyi içerebilir. Bir grafiği görüntülemek istiyorsanız, her seri grafikteki bir eğriye karşılık gelecektir. Grafikleri görüntülemek istiyorsanız, bazı grafik türleri için birkaç farklı seriyi üst üste yerleştirebilirsiniz, diğerleri için (pasta grafikler gibi) muhtemelen çirkin görünecektir. Ancak bu durumda da tek bir bileşen için ayar yapabilirsiniz. Çizelge farklı grafik türlerine sahip aynı verilerin birkaç serisi. Daha sonra her seferinde bunlardan birini aktif hale getirerek kullanıcıya ilgi duyduğu verileri görüntüleyen grafik türünü seçme olanağı sağlayabilirsiniz.

Bir veya iki bileşeni (Şekil 4.8'i yeniden oluşturmak istiyorsanız) yerleştirin Çizelge formda ve Nesne Denetçisinde açılan özelliklere bakın. İşte bunlardan bazılarının açıklamaları.

Kullanıcının yürütme sırasında farenin sağ tuşuna tıklayarak grafiğin gözlemlenen kısmını kaydırıp kaydıramayacağını belirler. Olası değerler: pmNone - kaydırma yasaktır, pmHorizontal, pmVertical veya pmBoth - kaydırmaya sırasıyla yalnızca yatay yönde, yalnızca dikey yönde veya her iki yönde izin verilir.

Kullanıcının, fare imleci ile bir grafiğin veya grafiğin parçalarını keserek, yürütme sırasında görüntü ölçeğini değiştirmesine olanak tanır (aşağıdaki Şekil 4.8 b, tamamen Şekil 4.8 a'da sunulan grafiğin bir parçasını görüntüleme anını gösterir).

Grafiğin başlığını tanımlar.

Grafiğin etiketini tanımlar. Varsayılan olarak hiçbiri. İmza metni Metin alt özelliği tarafından belirlenir.

Diyagramın etrafında bir kenarlık tanımlar.

Diyagramın açıklaması sembollerin bir listesidir.

MarjSol, MarjSağ, MarjÜst, MarjAlt

Sol, sağ, üst ve alt kenar boşluğu değerleri.

Alt Eksen, Sol Eksen, Sağ Eksen

Bu özellikler sırasıyla alt, sol ve sağ eksenlerin özelliklerini belirler. Bu özelliklerin ayarlanması grafikler ve bazı grafik türleri için anlamlıdır.

Sol Duvar, Alt Duvar, Arka Duvar

Bu özellikler, grafiğin üç boyutlu görüntüleme alanının sırasıyla sol, alt ve arka kenarlarının özelliklerini belirler (bkz. Şekil 4.8 a, alt grafik).

Bileşende görüntülenen veri serilerinin listesi.

3D harita gösterimini etkinleştirir veya devre dışı bırakır.

Üç boyutlu ekranın özellikleri.

Üç boyutlu ölçek (Şekil 4.8 için bu, diyagramın kalınlığı ve grafik şeritlerinin genişliğidir).


Nesne Denetçisinde listelenen özelliklerin çoğunun yanında, Grafik Düzenleyicinin bir veya başka sayfasını çağırmanıza olanak tanıyan elipsli düğmeler vardır - grafiklerin tüm özelliklerini ayarlamanıza olanak tanıyan çok sayfalı bir pencere. Diyagram Düzenleyicisi bileşene çift tıklanarak da çağrılabilir Çizelge veya üzerine sağ tıklayıp açılan menüden Grafiği Düzenle komutunu seçerek.

Şekil 4.8'de gösterilen uygulamayı yeniden oluşturmaya çalışmak istiyorsanız üstteki bileşene çift tıklayın. Çizelge. Harita Düzenleyici penceresine (Şek. 4.9) birkaç sekme içeren Harita sayfasına yönlendirileceksiniz. Öncelikle üzerindeki Seriler sekmesi ilginizi çekecektir. Ekle düğmesine tıklayın - bir seri ekleyin. Tablo veya grafiğin türünü seçebileceğiniz bir pencereye yönlendirileceksiniz (Şekil 4.10). Bu durumda Pasta - bir pasta grafiği seçin. Başlıklar sekmesini kullanarak grafiğin başlığını ayarlayabilirsiniz, Gösterge sekmesi grafik açıklamasını (sembol listesi) görüntülemek için parametreleri ayarlamanıza veya onu ekrandan tamamen kaldırmanıza olanak tanır, Panel sekmesi panelin ekrandaki görünümünü belirler. Grafiğin görüntülendiği 3B sekmesi size grafiğinizin görünümünü değiştirme fırsatı verir: eğim, kaydırma, kalınlık vb.

Grafik Düzenleyicide çalışırken ve bir grafik türü seçtiğinizde, bileşenler Çizelge Formunuz, içine girilen koşullu verilerle birlikte görünümünü görüntüler (bkz. Şekil 4.11).

Şekil 4.10 Grafik Düzenleyicide bir grafik türü seçme


Bu nedenle uygulamanıza çeşitli seçenekleri uygulamanın sonucunu hemen görebilirsiniz ki bu da oldukça kullanışlıdır.

Aynı zamanda bir dizi sekmeye sahip olan Seri sayfası, seri için ek görüntüleme seçeneklerini belirleme olanağı sağlar. Özellikle, Format sekmesindeki bir pasta grafiği için Dairesel Pasta seçeneğinin etkinleştirilmesi yararlı olacaktır; bu, bileşenin herhangi bir boyutunda, Çizelge Grafiği daire şeklinde görüntüleyin. İşaretler sekmesinde, Stil grubunun düğmeleri, grafiğin ayrı bölümleriyle ilgili etiketlere ne yazılacağını belirler: Değer - değer, Yüzde - yüzdeler, Etiket - veri adları vb. Şekil 4.8'deki örnekte Yüzde düğmesi etkinleştirilmiştir ve Genel sekmesinde yalnızca tam sayı değerlerinin görüntülenmesini sağlayacak bir yüzde şablonu ayarlanmıştır.

İsterseniz bu bileşene ekleyebilirsiniz Çizelge Grafik sayfasının Seriler sekmesindeki Klonla düğmesini tıklatarak ve ardından bu yeni seri için Değiştir düğmesini tıklatıp farklı bir grafik türü (örneğin Çubuk) seçerek başka bir özdeş seriyi oluşturabilirsiniz. Tabii ki iki farklı şekiller bir resimdeki diyagramlar kötü görünecektir. Ancak bu yeni serinin göstergesini Seriler sekmesinde kapatabilir ve ardından kullanıcının bir veya başka bir grafik ekranı türü seçmesine izin verebilirsiniz (bunun nasıl yapıldığını aşağıda göstereceğiz).

Diyagram Düzenleyiciden çıkın, uygulamanızdaki alt bileşeni seçin Çizelge ve Diyagram Düzenleyiciyi kullanarak özelliklerini ayarlamayı tekrarlayın. Bu durumda grafikte iki eğrinin görüntülenmesini istiyorsanız iki seri belirtmeniz ve Çizgi grafik tipini seçmeniz gerekecektir. Grafiklerden bahsettiğimiz için grafiğin eksenlerinin ve üç boyutlu kenarlarının koordinat özelliklerini belirlemek için Eksen ve Duvarlar sekmelerini kullanabilirsiniz.

Bu, uygulamanın görünümünün tasarımını tamamlar. Geriye sadece görüntülemek istediğiniz veriyi belirten kodu yazmak kalıyor. Test uygulaması için pasta grafikte bazı sabit verileri ve grafiklerde sinüs ve kosinüs fonksiyonlarını ayarlayalım.

Görüntülenen değerleri ayarlamak için seri yöntemlerini kullanmalısınız Seri. Sadece üç ana yönteme odaklanalım.

Yöntem Temizlemekönceden girilen bir dizi veriyi temizler.

Yöntem Eklemek:

(Const AValue: Double; Const ALabel: String;: TColor)

Diyagrama yeni bir nokta eklemenizi sağlar. Parametre Bir değer katma değere karşılık gelir, parametre Bir etiket- diyagramda ve açıklama kısmında görüntülenecek ad, Bir renk- renk. Parametre Bir etiket- isteğe bağlı, boş olarak ayarlanabilir: "".

Yöntem XY ekle:(Sabit AXValue, AYValue: Double;ALabel: String; AColor: TColor)

fonksiyon grafiğine yeni bir nokta eklemenizi sağlar. Seçenekler AX Değeri Ve AY Değeri argümana ve fonksiyona karşılık gelir. Seçenekler Bir etiket Ve Bir renk yöntemdekiyle aynı Eklemek.

Dolayısıyla örneğimizdeki veri yükleme prosedürü şöyle görünebilir:

155;=251;=203;=404;

var: kelime;

başlamak Seri1 Yapmak

başlamak;(A1, "Atölye 1", clYellow);(A2, "Atölye 2", clBlue);(A3, "Atölye 3", clRed);(A4, "Atölye 4", clPurple);

son;. Temizlemek;. Temizlemek;

için ben: =0 ile 100 Yapmak

başlamak. AddXY (0,02*Pi*i, sin (0,02*Pi*i), "", clRed);. AddXY (0,02*Pi*i, cos (0,02*Pi*i), "", clBlue);

Örneğin, bir grafikte görüntülenen verileri verdiyseniz, iki seri Seri1 Ve Seri4 farklı şekiller - Turta Ve Çubuk, ardından kullanıcının isteğine göre diyagramın türünü değiştiren bir prosedür tanıtabilirsiniz. Bu prosedür bir olaya girilebilir Tıklamada bir düğme, bir menü komutu veya örneğin yalnızca bir bileşene tıklamayı işlemek Çizelge. Verileri yüklemek için Seri4 ve bu diyagramı ilk anda görünmez hale getirin, daha önce verilen prosedürün sonuna operatörleri ekleyebilirsiniz.

Ata (Seri1); Etkin: =yanlış;

Bu operatörlerden ilki, yerleştirilen verileri yeniden yazar. Seri1, seri halinde Seri4. Ve ikinci operatör seriyi görünmez kılıyor Seri4. Diyagram tipinin değiştirilmesi prosedürle gerçekleştirilir

Aktif: = Olumsuz Seri1. Aktif;. Aktif: = Olumsuz Seri4. Aktif;

Şekil 4.8b'de kullanıcının başka bir diyagram görünümüne geçmesinin sonucunu görebilirsiniz.

"Delphi'de grafik bilgileri görüntüleme"
Konu planı:
1. Grafik çıktı yöntemleri
Delphi'deki bilgiler.
2. Resimleri görüntüleyin.
3. Geometrik ekran
rakamlar.

1. Grafik bilgilerini görüntüleme yöntemleri.
Delphi'de birkaç yol vardır
grafik bilgilerinin çıktısı:
Önceden hazırlanmış çıktı
görüntüler (Görüntü bileşenleri,
Şekil);
Grafikler ve diyagramlar oluşturma
(Grafik bileşeni vb.);
Görüntüleme
programlı olarak (nesne
Tuval).

2. Resimleri görüntüleyin.
Resimleri kullanarak görüntüleme
Resim bileşenine baktık
önceki konulardan biri.
Burada bir örneğe bakacağız
basit animasyonun uygulanması
periyodik değişiklikle
görüntülenen resim
Görüntü bileşenleri.
Örneğe gidin.


Protozoanın gösterimi
formdaki geometrik şekiller
Şekil bileşenini sağlar.

3. Geometrik şekillerin gösterimi.
Şekil bileşeninin temel özellikleri:
Fırçalamak
Dolma kalem
Şekil
Renk (.Renk) ve stil (.Stil)
rakamı dolduruyor.
Renk (.Renk), stil (.Style), genişlik
Satırların (.Width) ve çıktı yöntemi (.Mode)
rakamlar.
Geometrik şekil türü.

3. Geometrik şekillerin gösterimi.
Çeşitli Şekil bileşenlerinden
Basit çizimler oluşturabilirsiniz.
Programlı olarak konum değiştirme
(.Sol, .Üst) boyutu (.Genişlik, .Yükseklik) ve
Şekil bileşenlerinin rengi (Fırça.Renk)
çizimde uygulamak mümkündür
basit animasyonun unsurları.
Bir örnek düşünün.

4. Grafik ve diyagramların oluşturulması.
Diyagramlar şunun içindir:
daha fazla görsel temsil
sayısal veri dizileri, bunların
görsel gösterim ve analiz.
Örnek.
Delphi'de diyagramlar oluşturmak için
birkaç bileşen var
bunlardan biri Grafik bileşenidir (bölüm
TeeChart Std).

4. Grafik ve diyagramların oluşturulması.
Ondan sonraki Grafik bileşeninin görünümü
Formdaki ayarlar:

4. Grafik ve diyagramların oluşturulması.
Nesne Denetleyicisine ek olarak,
Chart bileşeninin özellikleri şunlar olabilir:
özel bir pencere açarak alın
iletişim kutusu (bileşen üzerindeki sağ düğme \
Grafiği Düzenle...)
Eklemek
veri serisi
Türü değiştir
diyagramlar

4. Grafik ve diyagramların oluşturulması.
Bir grafik türü seçme:

4. Grafik ve diyagramların oluşturulması.
Koordinat eksenleri için özellikleri ayarlama
(Eksen):

4. Grafik ve diyagramların oluşturulması.
Görüntü verileri genellikle
programlı olarak Grafiğe aktarıldı,
örnek:
Seri1.Temizle; (açık seri)
i:=1'den N'ye kadar
Series1.addxy(i, A[i], '', clGreen);
Değer:
X ekseni
Değer:
Y ekseni
İmza
X ekseni
Veri rengi
diyagramda
Bir inşaat örneğini düşünün
y = Sin(x) fonksiyonunun grafiği

Daha öte:
Laboratuvar işi № 13.1.
"Resimlerin ve geometrik görüntülerin gösterilmesi
figürler, onların animasyonları.”
Egzersiz yapmak:
1) Uygulamak için bir uygulama geliştirin
periyodik olarak en basit animasyon
görüntülenen görüntüyü değiştirir
Görüntü bileşenleri. (Resim sayısı değil
üçten az, resimleri seçin
kendi başına).

Egzersiz yapmak:
2) Gelip bir resim çizin
Bileşenleri şekillendirin. Programlı olarak
konumunu, boyutunu veya rengini değiştirme
Çizimdeki bileşenleri şekillendirme
en basit unsurları uygulamak
animasyon.

Daha öte:
Laboratuvar çalışması No. 13.2.
“Grafikler ve diyagramlar oluşturmak.”
Egzersiz yapmak:
1) Uygulamayı şuradan değiştirin:
9 numaralı laboratuvar çalışması (Ekran
Tablodaki veriler). Bir fırsat ekleyin
tablodaki bazı verileri gösteriyor
histogram veya pasta grafiğinde.
2) Verilen fonksiyonun grafiğini oluşturun.


Tepe