PDA

Tam Sürümünü Görmek İçin : Çalışma Zamanı Nesne Oluşturmak


ustaderdem
25/07/2003, 23:31
Arkadaşlar, benim yapmak istediğim programda bir çizim paneli olması gerekiyor ve bu panelde kişi örneğin bir çizgi çizecek, bir dikdörtgenm çizecek vs...

Kişi çizdiği bu şekilleri sonradan isterse yeniden seçebilmeli ve yeniden boyutlandırabilmeli veya silebilmeli...

Ben bu amaçla çizim mantığının vektör grafik olması gerektiğini düşündün ve aklıma şöyle bir yöntem geldi :

Kişinin mouse ile tıkladığı nokta benim o anda yaratacağım image nesnesinin top ve left noktaları olsun, kişi mouse'u hareket ettirdikçe istediği şekil bu yeni image nesnesi içine çizilsin ve kişi mouse'u bıraktığı vakit şekil ve image nesnesi son halini alsın...

Kişi sonradan bu image nesnesine tıklarsa yani bir nevi OnMouseClick yaparsa, nesneyi seçsin.. Nesnenin köşelerinden tutarsa da image dosyasının ve dolayısıyla da içindeki şeklin boyutu değişsin...

Herşey iyi güzelde, ben çalışma zamanı image nesnesi oluşturuyorum ama içine çizim yapamıyorum :) böylelikle bir halt beceremiyorum...

Bu konuda fikri veya önerisi olan var mı acaba ??

İlgilenenlere Şimdiden Teşekkürler...


Volkan Uzun
26/07/2003, 00:06
şimdi olayı tam anlamadım açıkcası ama,
bir resim çizdirdiğinde, işin bitince, anladığım koordinatları biliyorsun,
bu koordinatların etrafına bir rect çizebilirsin yani, tabii bu rect saydam vs olabilir. sonra bu recti i kaydetsen ?

Cario
26/07/2003, 09:05
Hangi programlama dili?

ustaderdem
26/07/2003, 18:09
İşin özeti,

Word ile basit çizimleri nasıl yapabiliyorsak ve sonradan oada çizdiklerimiz üzerinde nasıl ki düzenleme yapabiliyorsak, ben de kendi programım üzerinde aynısını yaptırmak istiyorum...

Bu işleri C++ Builder 6.0 ile yapmak istiryorum, çünkü programın geri kalanını bununla yaptım ve geriye tek bu çizim kısmı kaldı...

ilgilendiğiniz için Sağolun...

ustaderdem
28/07/2003, 23:20
Arkadaşlar,

TImage *I;
int image_num=0;

void __fastcall TForm1::FormMouseDown(TObject *Sender, TMouseButton Button,
TShiftState Shift, int X, int Y)
{
if(Button==mbLeft)
{
image_num++;

I = new TImage(this);
I->Left = X;
I->Top = Y;
I->Width = 250;
I->Height = 250;
I->Parent = Form1;
I->Name = "BizimImage"+IntToStr(image_num);
I->Visible = true;
I->Transparent = false;
I->Enabled = true;
I->AutoSize = false;
I->Stretch = true;

I->Canvas->MoveTo(0,0);
mouse_basili=true;
}
}
//--------------------------------------------------------------------------
-
void __fastcall TForm1::FormMouseMove(TObject *Sender, TShiftState Shift,
int X, int Y)
{
if(mouse_basili)
I->Canvas->LineTo(X-x1,Y-y1);
}
//--------------------------------------------------------------------------
-
void __fastcall TForm1::FormMouseUp(TObject *Sender, TMouseButton Button,
TShiftState Shift, int X, int Y)
{
mouse_basili = false;
}
//--------------------------------------------------------------------------
-



gibi bir yaklaşımla çalışma zamanı istediğiniz kadar image nesnesi
oluşturabiliyorsunuz ve de içine ouse ile çizim yapabiliyorsunuz...

Bu komutları ben Form'un OnMouseDown olayına yzdım, dolayısıyla ben
nerede tıklarsam form üzerinde o noktada image nesnesi oluşuyor...

Yanlız şuanda da bu nesneyi seçip sürükleme derdim başladı :))

Bende dert bitmeyecek herhalde :))