怎么把一个图像复制在一个不规则的图像上 (300分)

  • 主题发起人 主题发起人 xyf2001721
  • 开始时间 开始时间
X

xyf2001721

Unregistered / Unconfirmed
GUEST, unregistred user!
给点意见!!!
 
你是指物理上让它们去色?还是扫描下来去色?
如果是扫描下来后可以用PhotoShop的色相/饱和度来改变
如果是物理上的最好别轻易尝试.
 
如果打算自己写程序处理可以试试ImageEn控件,可以对色相、亮度、对比度、伽马值等进行调整。
 
如果是单色的图纸,直接设个范围,把黑色的取出来,
不知道把RGB中的B直接干掉会怎么样,当然要注意别影响其它颜色了(白色)
单色好办,彩色肯定会有影响的。可以削弱它三原色中的蓝色,要根据图纸的特点
确定具体标准了
 
image控件的像素可以通过pixels[x,y]指定颜色
 
用矢量化软件可以搞定,而且可以转为DWG格式。
 
如果是单色的图纸,把黑色的取出来,把其他的颜色可以通过
pixels[x,y]指定颜色,从而可以去掉底色!
 
至于非矩形的拷贝,一般还是运用 BitBlt 来实现的;
不过你需要首先创建区域,然后 SelectClipRgn 就OK 。

小小例子:(来自卷姐姐)

procedure TForm1.Button1Click(Sender: TObject);
begin
if OpenPictureDialog1.Execute then
Image1.Picture.LoadFromFile(OpenPictureDialog1.FileName);
end;

procedure TForm1.Button2Click(Sender: TObject);
var
Bmp :TBitmap;
FRgn :HRGN;
begin
Bmp :=TBitmap.Create;
Bmp.PixelFormat :=Image1.Picture.Bitmap.PixelFormat;
Bmp.Width :=100;
Bmp.Height :=100;
BitBlt(Bmp.Canvas.Handle,0,0,Bmp.Width,Bmp.Height,Image1.Canvas.Handle,80,80,SRCCOPY); //要拷贝的位图
FRgn :=CreateEllipticRgn(0,0,100,100);
SelectClipRgn(Image1.Canvas.Handle,FRgn);
Image1.Canvas.Draw(0,0,Bmp);
Bmp.Free;
DeleteObject(FRgn);
end;
 
老兄啊,我是想随着图形的变化而变化,就是变形。
 
后退
顶部