1

Konu: Line Komutu ile çizilen bir çizginin property lerini degiştirmek

Sevgili Arkadaşlar,
Bir formun init inde aşağıdaki gibi  komutlarla birçok çizgi çiziyorum:

Visual Fox Pro
.line(3,xx,13,xx)


Ama bu çizilen çizgilerin property lerini birtürlü değiştiremiyorum.
Bunun bir yolu var mı? Varsa nasıl?
İlgilenecek arkadaşlara şimdiden çok teşekkür ederim.
Sevgilerimle.
Erdal

2

Re: Line Komutu ile çizilen bir çizginin property lerini degiştirmek

Ali abi; ne yapmak istediğin hakkında hiç bir fikrim yok; ama VFP içerisinde GRAPH ile ilgili bir kaç örnek mevcut. Onları öncelikle bir incelemeni öneririm :

Visual Fox Pro
DO Home(2)+"\Solution\Solution.App"

Komutunu "Command Window" içerisinden çalıştır. Açılan örnek penceresinden;" Forms -> Form Graphics" Treeview düğümlerini aç. Orda bir kaç örnek uygulama var. Onları inceleyebilirsin.

Alternatif olarak GDI+ ilede bahsettiğin konuda bir çok örnek uygulama var :

http://vfpx.codeplex.com/wikipage?title … Title=Home

linkinden konu hakkında bilgi edinebilir ve örnek uygulamaları çalıştırabilirsin.

----------

Ek olarak

http://weblogs.foxite.com/vfpimaging/default.aspx

linkinide bir incelemeni öneririm.

Uğur
-------------------------------------------------------------------------------------------------------------
Hayat bir bisiklete binmek gibidir. Pedalı çevirmeye devam ettiğiniz sürece düşmezsiniz. Claude Peppeer
Kusuru söylenmeyen adam, ayıbını hüner sanır.  Türk Atasözü

3

Re: Line Komutu ile çizilen bir çizginin property lerini degiştirmek

Erdal abi,
Bir Line metodu var bir de Line nesnesi.
Eger metod olani kullanirsan (ki simdi onu kullaniyorsun), cls ile silip tum cizgileri yeniden cizmen gerekli. Onune bir baska nesne gelirse gene siliniyor ve Paint kullanman gerekiyor, filan.

Line nesnesini kullanirsan o zaman onun propertylerini degistirebilirsin. Line nesnesinin temel olarak 5 ozelligini kullaniyorsun:
Left, Top, Height, Width, LineSlant.

3,xx,13,xx  denince Y degeri sabit 3'ten 13'e yatay cizgi var demek. Yani Top = xx ve Height=0.

Visual Fox Pro
line1.Left = 3

line1.Top = xx
line1.Height = 0
line1.Width = 13-3
line1.lineSlant = '\' && gereksiz yatay ve dusey cizgilerde

Line nesnesinin ek olarak drawmode, polypoints, borderwidth ... propertyleri ve OleDrag* metodlari filan var.

4

Re: Line Komutu ile çizilen bir çizginin property lerini degiştirmek

Sevgili Çetin ve Sevgili Uğur,
Yapmak istediğim:
Bir form içerisinde hem SOLDAN SAĞA, hem AŞAĞIDAN YUKARIYA, hem de dairesel olarak çalışan üç PROGRESS BAR var. Bu program oldukça iyi çalışıyor ama ben bunu daha güzel görünür hale getirmek, hem de programı kısaltmak istiyorum. Benim garip kodlama şeklimi mazur göreceğinizi umarak programı aşağıda gönderiyorum. Burada çizgilerin renklerini ve kalınlıklarını değiştirirsem daha iyi bir görünüş ve daha kısa bir program elde edceğimi umuyorum.
Sevgili Uğur verdiğin  örnekleri inceleyeceğim; umarım işime yarar birşeyler bulurum.
Sevgili Çetin, bu line nesnesini ve paint olayını da inceleyeceğim. Bakalım işin içinden çıkabilecek miyim?
Sevgi ve teşekkürlerimle.
Erdal

Visual Fox Pro
Public oForm

 
oForm = Createobject('form1')
 
oForm.Show()
 
 
 
Define Class form1 As Form
Add Object text1 As TextBox With Left = 192, Top = 156,  Width = 48, height=25, name = "text1"
Top = -1
Left = 2
Height = 250
Width = 453
DoCreate = .T.
Caption = "Form1"
WindowType = 1
PROCEDURE Init
CLEAR
lotx = 35 && Lotx değeri Saniye olarak süreyi ayarlar
yzd = 0 && Yüzde miktarı
xx=228
dn = 0
r = 50  && Dairenin yarı çapı
*deltaT=(2*PI()/98) && Sabit dairenin yüzde olarak dairenin adımı
deltaT = DTOR(3.69) && Dairenin yüzde olarak dairenin adımı "SABİT"
thisform.Visible = .T.
lodx = SECONDS()+lotx
n = 25
? TIME()
DO WHILE lodx>SECONDS()
with thisform
FOR j=n TO n+3 && Bu döngü soldan sağa progress bar boyunu ayarlar
.line(j,200,j,215)
NEXT
FOR i = 1 TO 2 && Bu döngü aşağıdan yukarıya progress bar boyunu ayarlar
.line(3,xx,13,xx)
* .line(150,60,(150+50*cos(dn)),(60+50*sin(dn)))
xx=xx-1
NEXT
.line(150,60,(150+r*Cos(dn)),(60+r*Sin(dn))) && Daire çizimi
FOR jx =dn-deltaT TO dn STEP deltat/3 && Bu döngü dairenin bütünlüğünü ayarlar
.line(150,60,(150+r*Cos(jx)),(60+r*Sin(jx)))
NEXT
n=n+4
dn= dn+deltaT
thisform.text1.Value = "% "+ALLTRIM(STR(yzd))
yzd = yzd+1
ENDWITH
mx = SECONDS()+(lotx/100)
DO WHILE mx>SECONDS() && Hassas zaman ayarı için döngü
ENDDO
ENDDO
 
? TIME()
thisform.text1.Value = "% 100"
WAIT ""
this.Visible = .F.
thisform.Release
CANCEL
 
ENDPROC

5

Re: Line Komutu ile çizilen bir çizginin property lerini degiştirmek

Sevgili Arkadaşlar,
İstediğimi Çetinin önerdiği line nesnesi ile çözdüm. Böylece "object" mantığını da hakkıyla öğrenmiş oldum. Yatay ve dikey cizgileri kolayca becerdim ama line object metodu ile daire çizmeği becermek inanılmaz kadar uzun ve zor oldu; ama sonunda başardım.
İlgilenen tüm arkadaşlara ve özellikle de Sevgili Çetine yürekten teşekkür ederim.
Sevgilerimle.
Erdal