scanline kullanımını
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
scanline kullanımını
scanline kullanarak image nesnesinde 1 satırdaki renk kodunu almak isityorum nasıl yaparım...bunu.....
Siz hayal edin...Biz yapalım TuannaSoft...
-
- Kıdemli Üye
- Mesajlar: 1223
- Kayıt: 26 Nis 2005 04:08
Merhaba.
gibi bir kodla alınır sanırım.
Kolay gelsin.
Kod: Tümünü seç
RGB[ X ]^.R := not RGB[ X ]^.R;
RGB[ X ]^.G := not RGB[ X ]^.G;
RGB[ X ]^.B := not RGB[ X ]^.B;
Kolay gelsin.
mege kardeşim sağ ol ama söle bir yazdım....ben bunlar ekrandaki satır kodlarını almak istedim....text yazıyorum ama beyaz bir sayfa için bana verdiği sonuc....
000
000
000
255255255
255255255
gibi ama normalde bütünpixellerde beyaz var....yani kısacası su ....
scanline
birinci satırda veya birinci pikseldeki bana renk kodunu ne ve nasıl olarak veriyor...
////////////////////////
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls, EnTifGr;
type
TForm1 = class(TForm)
Image1: TImage;
text: TMemo;
Button1: TButton;
Button2: TButton;
Splitter1: TSplitter;
Button3: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
b1: TBitmap;
c1: PByteArray;
x, y: Integer;
s:string;
t:Char;
k:COLOR16;
begin
try
b1 := Image1.Picture.Bitmap;
b1.PixelFormat:=pf1bit ;
for y := 0 to b1.Height - 1 do
begin
c1 := b1.Scanline[y];
s:='';
for x := 0 to (b1.Width - 1)*3 do
if (x mod 3) = 2 then
s:=inttostr(c1[y])+inttostr(c1[y-1])+inttostr(c1[y-2]);
text.Lines.Add(s);
end;
finally
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
var
t:TSaveDialog;
begin
t:=TSaveDialog.Create(self);
if t.Execute then
begin
text.Lines.SaveToFile(t.FileName+'.txt');
end;
end;
procedure TForm1.Button3Click(Sender: TObject);
var
resim:TOpenDialog;
begin
resim:=TOpenDialog.Create(self);
if resim.Execute then
begin
image1.Picture.LoadFromFile(resim.FileName);
end;
resim.Free;
end;
end.
000
000
000
255255255
255255255
gibi ama normalde bütünpixellerde beyaz var....yani kısacası su ....
scanline
birinci satırda veya birinci pikseldeki bana renk kodunu ne ve nasıl olarak veriyor...
////////////////////////
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls, EnTifGr;
type
TForm1 = class(TForm)
Image1: TImage;
text: TMemo;
Button1: TButton;
Button2: TButton;
Splitter1: TSplitter;
Button3: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
b1: TBitmap;
c1: PByteArray;
x, y: Integer;
s:string;
t:Char;
k:COLOR16;
begin
try
b1 := Image1.Picture.Bitmap;
b1.PixelFormat:=pf1bit ;
for y := 0 to b1.Height - 1 do
begin
c1 := b1.Scanline[y];
s:='';
for x := 0 to (b1.Width - 1)*3 do
if (x mod 3) = 2 then
s:=inttostr(c1[y])+inttostr(c1[y-1])+inttostr(c1[y-2]);
text.Lines.Add(s);
end;
finally
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
var
t:TSaveDialog;
begin
t:=TSaveDialog.Create(self);
if t.Execute then
begin
text.Lines.SaveToFile(t.FileName+'.txt');
end;
end;
procedure TForm1.Button3Click(Sender: TObject);
var
resim:TOpenDialog;
begin
resim:=TOpenDialog.Create(self);
if resim.Execute then
begin
image1.Picture.LoadFromFile(resim.FileName);
end;
resim.Free;
end;
end.
Siz hayal edin...Biz yapalım TuannaSoft...