1、选画一个圆,再用底色画一个小点圆,盖做大圆一部份,就是月牙形的图案,任意角度
旋转,就是重复画“大圆”,在不同位置(围着大圆)画小圆。
2、这个问题如果是小图没问题,如果是大图,就得用DirectX来解决。小图用象素来画。
下面代码是两张图的片面的渐变,只到另一图消失(Image1消失,Image2显示出来,显示在Image3上):
var
gr,gg,gb:integer;
i,j,k:integer;
TempBmp:TBitmap;
begin
Image3.Visible:=true;
Image3.Width:=Image1.Width;
Image3.Height:=Image1.height;
Image1.Visible:=false;
Image2.Visible:=false; //改变视图显示
TrackBar1.Max:=strtoint(edit1.text);
TrackBar1.Position:=0; //设置滑块
tempbmp:=TBitmap.Create;
tempbmp.Width:=Image1.Width;
tempbmp.Height:=Image1.Height; //创建临时位图,保存变化
//主循环,对每个点进行操作
for K:=0 to TrackBar1.Max do begin
with tempbmp.Canvas do
for i:=0 to Image1.Width do
for j:=0 to Image1.Height do begin
gr:=GetRValue(Image1.Canvas.Pixels[i,j])+
k*(GetRValue(Image2.Canvas.Pixels[i,j])-
GetRValue(Image1.Canvas.Pixels[i,j])) div TrackBar1.Max;
gg:=GetGValue(Image1.Canvas.Pixels[i,j])+
k*(GetGValue(Image2.Canvas.Pixels[i,j])-
GetGValue(Image1.Canvas.Pixels[i,j])) div TrackBar1.Max;
gb:=GetBValue(Image1.Canvas.Pixels[i,j])+
k*(GetBValue(Image2.Canvas.Pixels[i,j])-
GetBValue(Image1.Canvas.Pixels[i,j])) div TrackBar1.Max;
Pixels[i,j]:=RGB(gr,gg,gb);
end;
Image3.Canvas.Draw(0,0,tempbmp);
Image3.Update;
TrackBar1.Position:=k;
end;
end;