07-03-2011, 20:00
Aşağıdaki procedure tüksekliği sabit eşit genişlikteki parçaların birleşiminden
oluşan bmp resimdeki istenilen parçayı alarak kod içerisinde
form1.Canvas.Draw(0,60,bmpdest);
ile belirtilen Canvas a çizer (canvası kendinize göre değiştirin)
Örnek Kullanım yerleri :
* Winamp deki yazı ve rakamlar bmp olarak hazırlanır.
* Multimedia programlarındaki yazılar ve rakamlar gini
* Timer a bağlar ve sayıları ayarlarsanız animated image elde edersiniz.
KULLANIMI :
Genel Formu :
ResimAl(başlangıç,bitiş,yükseklik:Integer;DosyaAdı:String
Örnek:
var
dosya:String;
begin
dosya:=ExtractFilePath(Application.ExeName)+'anim1.bmp';
resimal(84,126,42,dosya);
end;
şeklinde kullanılabilir.
NOT: Kullanılam BMP 24 Bit olmalıdır.
//---------------------------------------//
procedure Tform1.resimal(xbas,xson,y:Integer;FileName:String);
type
TRGBTripleArray=Array[0..32768] of TRGBTriple;
pTRGBTriple=^TRGBTripleArray;
var
boyx,i,j:Integer;
bmpsource,bmpdest:TBitmap;
row:pTRGBTriple;
TRGBMatrix:array of array of TRGBTriple;
begin
bmpsource:=TBitmap.Create;
bmpdest:=TBitmap.Create;
try
boyx:=xson-xbas;
SetLength(TRGBMatrix,y+1,boyx+1);
bmpsource.PixelFormat:=pf24bit;
bmpdest.PixelFormat:=pf24bit;
bmpsource.Transparent:=true;
bmpdest.Transparent:=true;
bmpdest.Width:=xson-xbas;
bmpdest.Height:=y;
//ShowMessage(IntToStr(bmpdest.Width)+'X'+IntTostr(bmpdest.Height));
bmpsource.LoadFromFile(FileName);
for j:=0 To bmpsource.Height -1 do //bmp yüksekliği
begin
row:=bmpsource.ScanLine[j];
for i:=0 to bmpsource.Width - 1 do // belirtilen saturları
begin
if (i >= xbas) and (i <= xson) then
begin
try
TRGBMatrix[j,i-xbas]:=row[i];
except
on exception do
exit;
end;//try
end;
end;//for i
end;//for j
//------------//
form1.Canvas.Draw(0,0,bmpsource);
for j:=0 To bmpdest.Height-1 do
begin
row:=bmpdest.ScanLine[j];
for i:=0 To bmpdest.Width-1 do
row[i]:=TRGBMatrix[j,i];
end;
form1.Canvas.Draw(0,60,bmpdest);
finally
bmpsource.Free;
bmpdest.Free;
end;//try
end;
kod adı pars tarafından yapılmısdır
oluşan bmp resimdeki istenilen parçayı alarak kod içerisinde
form1.Canvas.Draw(0,60,bmpdest);
ile belirtilen Canvas a çizer (canvası kendinize göre değiştirin)
Örnek Kullanım yerleri :
* Winamp deki yazı ve rakamlar bmp olarak hazırlanır.
* Multimedia programlarındaki yazılar ve rakamlar gini
* Timer a bağlar ve sayıları ayarlarsanız animated image elde edersiniz.
KULLANIMI :
Genel Formu :
ResimAl(başlangıç,bitiş,yükseklik:Integer;DosyaAdı:String

Örnek:
var
dosya:String;
begin
dosya:=ExtractFilePath(Application.ExeName)+'anim1.bmp';
resimal(84,126,42,dosya);
end;
şeklinde kullanılabilir.
NOT: Kullanılam BMP 24 Bit olmalıdır.
//---------------------------------------//
procedure Tform1.resimal(xbas,xson,y:Integer;FileName:String);
type
TRGBTripleArray=Array[0..32768] of TRGBTriple;
pTRGBTriple=^TRGBTripleArray;
var
boyx,i,j:Integer;
bmpsource,bmpdest:TBitmap;
row:pTRGBTriple;
TRGBMatrix:array of array of TRGBTriple;
begin
bmpsource:=TBitmap.Create;
bmpdest:=TBitmap.Create;
try
boyx:=xson-xbas;
SetLength(TRGBMatrix,y+1,boyx+1);
bmpsource.PixelFormat:=pf24bit;
bmpdest.PixelFormat:=pf24bit;
bmpsource.Transparent:=true;
bmpdest.Transparent:=true;
bmpdest.Width:=xson-xbas;
bmpdest.Height:=y;
//ShowMessage(IntToStr(bmpdest.Width)+'X'+IntTostr(bmpdest.Height));
bmpsource.LoadFromFile(FileName);
for j:=0 To bmpsource.Height -1 do //bmp yüksekliği
begin
row:=bmpsource.ScanLine[j];
for i:=0 to bmpsource.Width - 1 do // belirtilen saturları
begin
if (i >= xbas) and (i <= xson) then
begin
try
TRGBMatrix[j,i-xbas]:=row[i];
except
on exception do
exit;
end;//try
end;
end;//for i
end;//for j
//------------//
form1.Canvas.Draw(0,0,bmpsource);
for j:=0 To bmpdest.Height-1 do
begin
row:=bmpdest.ScanLine[j];
for i:=0 To bmpdest.Width-1 do
row[i]:=TRGBMatrix[j,i];
end;
form1.Canvas.Draw(0,60,bmpdest);
finally
bmpsource.Free;
bmpdest.Free;
end;//try
end;
kod adı pars tarafından yapılmısdır
