ソス@ソスソスScanLineソスナ色ソスiRGB)ソスソス謫セソスソスソストゑソスソスフ色ソスソスソスソスHソスhソスz
|
ソスEC/C++
ソスEDelphi
ソスEVisual BasicソスソスソスSソスソス
ソス@(VB2-VB6ソスソス.NETソスソスソスp)
ソスEVisual Basic(VB2-VB6)
ソスEVisual Basic .NET
ソスEVisual C++
ソスEpapy's softwarelibrary
ソスiD6ソスpソス[ソス¥ソスiソスソスソスj
ソスソスソスソス鞫懶ソスソス]ソスフ搾ソスソスソスソスソスソスソスScanLineソスソスソスソスソスソストゑソスソスソスソスソスソスソスソスソスソスソスソスソスソスノ撰ソスソスソスソスソスソスワゑソスソスソスソスB
ソスヌゑソスソスソスソスネゑソスソス]ソスソスソスノピソスNソスZソスソスソスソスソスフ色ソスソスソスソスHソスソスソスト茨ソスxソスナ色ソスフ会ソスソスHソスソスソスソスソスソスソスソスト茨ソスwソスフ搾ソスソスソスソスソスソスソスソスソスソスソスソスソスニ思ソスソスソスワゑソスソスBソスソスソスンのソソス[ソスXソスフ要ソス_ソスヘ会ソスソスLソスフようソスノゑソスソストゑソスソスワゑソスソスソスソス@pDests[iy][ix] := pSources[my][mx];ソス@ソスフとゑソスソスソスナ色ソスソス謫セソスソスソスト、ソス痰ヲソスソス(ソスソスソスネ擾ソスフ厄ソスソス驍ウソスナゑソスソスソスホ撰ソスソスニ費ソスソスソスンゑソスソスソスソスノ選ソスハゑソスソスソスニゑソスソスト)
ソス@if R+G+B>50 then begin
R1:=255; G1:=255; B1:=255;ソス@//ソスKソスソスソスソスRGBソスソスwソス閧オソスソスソスソス
end;
ソスソスソスソスR1,G1,B1ソスソスソス]ソスソスフピソスNソスZソスソスソスノ塗ソスソスAソスニゑソスソスソスソスソスソスソスソスソスソスソスソスソスソスソスフでゑソスソスソスScanLineソスヘ擾ソスソス゚てでゑソス閧ゥソスソスソスソスソスかソスソスワゑソスソスソスBソスソスしソスソスソスソスソス閧「ソスソスソスワゑソスソスB
var
Dest: TBitmap;
pSources, pDests: array of PRGBArray;
soWidth, soHeight, deWidth, deHeight: Integer;
(ソスソスソスフ托ソスソスヘ省暦ソスソスj
Begin
ソスiソスソスソスAソスソスソスAソスソスソスSソスソスソスWソスネどの計ソスZソスニ設抵ソスj
//** ソスソス]ソスソス鞫懶ソスフ設抵ソス
Dest := TBitmap.Create;
deWidth := sowidth;
deHeight := soheight;
try
Dest.PixelFormat := pf24bit;
dest.Width:=sowidth;
dest.Height:=soheight;
with Dest.Canvas doソス@//ソスソスソスソスソスhソスソス
begin
Brush.Color := clWhite;
FillRect(Rect(0, 0, soWidth, soHeight));
end;
//** ScanLineソスLソスソスソスbソスVソスソスソスフ作成
//== ソスソスソス鞫
SetLength(pSources, soHeight);
for I := 0 to soHeight - 1 do pSources[I] := Source.ScanLine[I];
//== ソスソス]ソスソスフ画像
SetLength(pDests, deHeight);
for I := 0 to deHeight - 1 do pDests[I] := Dest.ScanLine[I];
//## ソス鞫懶ソスフ会ソス]
for iy := 0 to soHeight - 1 do begin
dy:=iy-cy;ソス@ソス@//cy=ソスソスソスソス/ソスQ
for ix := 0 to soWidth - 1 do begin
dx:=ix-cx;ソス@//cx=ソスソス/ソスQ
mx := Trunc(CosRad * dx - SinRad * dy + 0.5+cx);
my := Trunc(SinRad * dx + CosRad * dy + 0.5+cy);
if (mx<sowidth) and (mx>0) and (my<soheight) and (my>0) then begin
ソス@ソス@
pDests[iy][ix] := pSources[my][mx];
end;
end; //ix
end; //iy
finally
Source.Free;
end;
ソスソスソスソスナわかソス驍ゥソスネ?
TRGB = packed record
Blue : Byte;
Green : Byte;
Red : Byte;
end;
TRGBArray = array[0..0] of TRGB;
PRGBArray = ^TRGBarray;
var
SrcRow : pRGBArray;
for Y:=0 to H-1 do
begin
SrcRow := Bmp.ScanLine[Y];
for X:=0 to W-1 do
begin
R := SrcRow[X].Red;
G := SrcRow[X].Green;
B := SrcRow[X].Blue;
end;
end;
KHE00221ソスlソスAソスソスソスソスソスソスワゑソスソスソスソスBソス@ソスソスソス閧ェソスニゑソスソスソスソスソスソスソスソスワゑソスソスB
ソスソスソスソスソスソスソスソスソスソスソスTソスソスソスvソスソスソスソス1ソスsソスソスソスソスソスソスScanLineソスナゑソスソスソスソスフでまゑソス1ソスsソステつ変色ソスフテソスXソスgソスソスソスソスト撰ソスソスソスソスソスソスワゑソスソスソスソスBソスナ終ソスIソスノは画像ソスフ会ソス]ソスソスソスソスソスソスワゑソスソスフで違うソスsソスフデソス[ソス^ソス操搾ソス
ソスソスソスソスKソスvソスソスソスソスソスソスワゑソスソスフで各ソスsソスフデソス[ソス^ソスソスiソスZソスpソスIソスノはよくソスかソスソスネゑソスソス況でゑソスソスソスソスjソスソスソスソスソスノ配ソスソスノゑソスソストみまゑソスソスソスソス轤、ソスワゑソスソスソスソスソスソスワゑソスソスソスソスBソスソスソスLソスフテソスXソスgソスソスヘカソスソスソス[ソスソスソスソスmソスNソスソスソスノゑソスソスト上下ソスソスソス]ソスソスソストみまゑソスソスソスソスBソスソスソス黷ェソスナゑソスソスソスホ思ソスソスソスソスソスソスソスニゑソスソスソスソスソスソスナゑソスソスソスヘゑソスソスナゑソスソスフでゑソスソス黷ゥソスソスソスソスソスソスソスソスソスソスソスソスニ思ソスソスソスワゑソスソスBソスソスソスいソスソスHソスvソスソスソストゑソスソスフ技ソスソスgソスノつゑソスソスソスソスソスソスニ思ソスソスソスワゑソスソスBソスソスソス閧ェソスニゑソスソスソスソスソスソスソスソスワゑソスソスソスソスB
/////
bmp1.PixelFormat := pf24bit;
bmp2.PixelFormat := pf24bit;
setlength(abmprow1 ,h1);
setlength(abmprow2 ,h1);
for jy := 0 to h1-1 do aBMProw1[jy]:=bmp1.ScanLine[jy];
for jy := 0 to h1-1 do aBMProw2[jy]:=bmp2.ScanLine[jy];
for jy := 0 to h1-1 do //ソスcソスソスソスソスソスフ繰ソスソスヤゑソス
begin
ky:=h1-jy-1; //ソス繪コソスソスソス]ソスフゑソスソスソスソスW
for ix := 0 to w1-1 do //ソスソスソスソスソスソスソスフ繰ソスソスヤゑソス
begin
Rb := abmpRow1[jy][iX].R;
Gb := abmpRow1[jy][iX].G;
Bb := abmpRow1[jy][iX].B;
brt:=trunc(rb*0.3+gb*0.59+bb*0.11);
aBMProw2[ky][ix].R := brt;
aBMProw2[ky][ix].G := brt;
aBMProw2[ky][ix].B := brt;
end;
end;
//ソスナ鯉ソスソスFORM1ソスヨコソスsソス[
form1.Canvas.Draw(0,50,bmp2);
bmp1.Free;
bmp2.Free;