Çok acil image konusu...VTS-VMS için

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Kilitli
Kullanıcı avatarı
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

Mesaj gönderen bulutsuzluk_35 »

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ı.
Kullanıcı avatarı
Battosai
Üye
Mesajlar: 1316
Kayıt: 01 Eki 2007 12:02
Konum: Ankara

Mesaj gönderen Battosai »

İstersen kaynak kodları ile birlikte yapılmışını yollayalım :) Şaka bi yana bunun için image kullanmana gerek yok yapılmışı var zaten. StringGrid kullan bu iş için istediğin satır sütun ayarını yap...Çok basittir biraz incelersen....
Kullanıcı avatarı
bulutsuzluk_35
Üye
Mesajlar: 124
Kayıt: 06 Eki 2007 04:14
Konum: İzmir-Ankara-İstanbul-Antalya
İletişim:

Mesaj gönderen bulutsuzluk_35 »

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.
Kullanıcı avatarı
Battosai
Üye
Mesajlar: 1316
Kayıt: 01 Eki 2007 12:02
Konum: Ankara

Mesaj gönderen Battosai »

O da kolay; ekran görüntüsünü alarak yaparsın...örnekler mevcut forumda
Kullanıcı avatarı
bulutsuzluk_35
Üye
Mesajlar: 124
Kayıt: 06 Eki 2007 04:14
Konum: İzmir-Ankara-İstanbul-Antalya
İletişim:

Mesaj gönderen bulutsuzluk_35 »

Başka bir yöntemi varmıdır ???
aseka

Mesaj gönderen aseka »

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.
Kullanıcı avatarı
conari
Üye
Mesajlar: 2102
Kayıt: 27 Nis 2006 03:10
Konum: İstanbul & Gebze Karışık

Mesaj gönderen conari »

Başlık kitlenmeden işi çözerseniz iyi çünkü forum kurallarına uymuyor.
Bir kelimenin anlamını öğretsen bile yeter..
ResimResim
Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7605
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

Mesaj gönderen mussimsek »

viewtopic.php?t=6

Lütfen forum kurallarını okuyup, uyalım.
Kilitli