Çok acil image konusu...VTS-VMS için
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
- bulutsuzluk_35
- Üye
- Mesajlar: 124
- Kayıt: 06 Eki 2007 04:14
- Konum: İzmir-Ankara-İstanbul-Antalya
- İletişim:
Çok acil image konusu...VTS-VMS için
Arkadaşlar bu iş benim içim çok acil ve önemli.
Şimdi forumun neredeyse tümünü incelememe rağmen bulamadım.Amacım şu form üzerine bir adet image koyacam ve bunu ızgara gibi yada grid gibi istediğim boyutlarda çizgiler olacak.Misal 32*32 diyecem 32 sütun ve 32 satır çizgiler olacak üzerinde ve ben oluşan küçük kareleri tıkladığımda sadece o hücre kırmızı yada sarı yada yeşil olacak.yani 1.tıkladığımda kırmızı ikincisinde sarı üçüncüsünde yeşil olacak.tıkladğım hücreyi bulmak için matematiksel işlem çok uzun bi konu ve yetersiz yani mouse.cursorpos.x lerle uraşmak uzun benim istediğim sadece şu bir component olsa mesela ben colcount ve rowcount unu girsem bana yazdığım özelliklerde ızgaralanmış bir image verse ve her hücresine ayrı ayrı işlem yapabilsem çok güzel olacak.Bu arada dediğimi daha iyi anlayabilmeniz açısından otobanlarda kullanılan trafik uyarı levhaları.
Şimdi forumun neredeyse tümünü incelememe rağmen bulamadım.Amacım şu form üzerine bir adet image koyacam ve bunu ızgara gibi yada grid gibi istediğim boyutlarda çizgiler olacak.Misal 32*32 diyecem 32 sütun ve 32 satır çizgiler olacak üzerinde ve ben oluşan küçük kareleri tıkladığımda sadece o hücre kırmızı yada sarı yada yeşil olacak.yani 1.tıkladığımda kırmızı ikincisinde sarı üçüncüsünde yeşil olacak.tıkladğım hücreyi bulmak için matematiksel işlem çok uzun bi konu ve yetersiz yani mouse.cursorpos.x lerle uraşmak uzun benim istediğim sadece şu bir component olsa mesela ben colcount ve rowcount unu girsem bana yazdığım özelliklerde ızgaralanmış bir image verse ve her hücresine ayrı ayrı işlem yapabilsem çok güzel olacak.Bu arada dediğimi daha iyi anlayabilmeniz açısından otobanlarda kullanılan trafik uyarı levhaları.
- bulutsuzluk_35
- Üye
- Mesajlar: 124
- Kayıt: 06 Eki 2007 04:14
- Konum: İzmir-Ankara-İstanbul-Antalya
- İletişim:
Ya grid olaylarını baya araştırdım stringgrid,drawgrid,imagegrid falan filan ama bunu engelleyen olaysa şu.72*72 bir ızgaar düşün bunun celllerini istediğin gibi boyadın tamam güzel ama birde bunu bmp uzantılı olarak kaydetme sorunumuz var.Birde bana gelen bmp uzantılı çizimleride bu image üzerinde göstermem gerekiyor.
- bulutsuzluk_35
- Üye
- Mesajlar: 124
- Kayıt: 06 Eki 2007 04:14
- Konum: İzmir-Ankara-İstanbul-Antalya
- İletişim:
Al sana geliştirmeye son derece müsait bir kod. TAseka isminde TImage'dan bir sınıf türettim. Sutunsayisini ve satirsayisini degistirebiliyorsun. Üzerine tıkladığında da tıkladığın hücreyi sarıya boyuyor. Sen istediğin gibi düzenle kodları.
Kod: Tümünü seç
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls;
type
TAseka = class(TImage)
private
sutungen,satiryuk:integer;
procedure ciz;
public
sutunsayi,satirsayi:integer;
constructor Create(AOwner: TComponent); override;
protected
procedure MouseDown(Button: TMouseButton; Shift: TShiftState;
X, Y: Integer); override;
end;
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure FormDestroy(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
abc:TASEKA;
implementation
{$R *.dfm}
{ TAseka }
procedure TAseka.ciz;
var
i:integer;
begin
canvas.Brush.Color:=clwhite;
canvas.FillRect(canvas.ClipRect);
satiryuk:=height div satirsayi;
sutungen:=width div sutunsayi;
width:=sutungen*sutunsayi;
height:=satiryuk*satirsayi;
canvas.MoveTo(0,0);
canvas.LineTo(width-1,0);
canvas.LineTo(width-1,height-1);
canvas.LineTo(0,height-1);
canvas.LineTo(0,0);
for i:=1 to satirsayi-1 do
begin
canvas.MoveTo(0,i*satiryuk);
canvas.LineTo(width,i*satiryuk);
end;
for i:=1 to sutunsayi-1 do
begin
canvas.MoveTo(i*sutungen,0);
canvas.LineTo(i*sutungen,height);
end;
end;
constructor TAseka.Create(AOwner: TComponent);
begin
inherited;
sutunsayi:=8;
satirsayi:=8;
width:=400;
height:=400;
ciz;
end;
procedure TAseka.MouseDown(Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var
kare:Trect;
begin
inherited;
kare.Left:=(x div sutungen) * sutungen+1;
kare.Right:=kare.Left+sutungen-1;
kare.Top:=(y div satiryuk) * satiryuk+1;
kare.Bottom:=kare.Top + satiryuk-1;
ciz;
canvas.Brush.Color:=clyellow;
canvas.FillRect(kare);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
abc:=taseka.Create(self);
abc.Parent:=self;
abc.Left:=10;
abc.Top:=10;
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
abc.Free;
end;
end.