procedure TForm1.ToolButton7Click(Sender: TObject);
begin
with Image1 do
begin
AutoSize:= false;
Stretch:= true;
Transparent:=true;
Height:= round(Height*0.5);
Width:= round(Width*0.5);
PicState:= psOther;
end;
end;
实现起来相当简单,但是问题是,我希望图片是部分透明掉的,但是当AutoSize:= false;的时候,图象是放大了,但是原先透明掉的颜色又变成不透明的了。
而且发现很奇怪的问题,某些图象放大后形状基本不失真,效果很好,但是某些图象变得只剩外行看得出,里面的点全变成一种颜色涂鸦上去的,有人知道怎么回事怎么解决这个问题吗?
10 个解决方案
#1
上面的代码应该是缩小啦,放大是
Height:= round(Height*1.5);
Width:= round(Width*1.5);
Height:= round(Height*1.5);
Width:= round(Width*1.5);
#2
没见过,顶下吧
#3
顶起,还有一个DBGridEh ,如何让滚轮滚动的时候,当前数据记录不要变(只响应滚动条的拉动)。这个问题也是拖了好久没解决,悲惨
#4
位图放大要特殊处理的.
#5
某些图象放大后形状基本不失真,效果很好,但是某些图象变得只剩外行看得出,里面的点全变成一种颜色涂鸦上去的。
-----------------------------------------
这个应该是把图象(转化到位图)的边局最长的颜色 给 透明了。引起的…… 本人理解的
-----------------------------------------
这个应该是把图象(转化到位图)的边局最长的颜色 给 透明了。引起的…… 本人理解的
#6
vividw(vividw)能具体说下位图放大的特殊处理吗?或者贴点简单的代码参考下?
hangzhou_hammer() ,直接设置 Image 的Transparent 为 true,图片是按左上角那一点来进行透明的是吧?你说的 把图象(转化到位图)的边局最长的颜色 给 透明了 我不是很清楚是什么意思
hangzhou_hammer() ,直接设置 Image 的Transparent 为 true,图片是按左上角那一点来进行透明的是吧?你说的 把图象(转化到位图)的边局最长的颜色 给 透明了 我不是很清楚是什么意思
#7
位图缩放 都会有损 需要处理的
可以用 gdi函数试试效果
BitBlt 或者
stretchdibits
SetStretchBltMode
可以用 gdi函数试试效果
BitBlt 或者
stretchdibits
SetStretchBltMode
#8
Picture.Bitmap.TransparentColor := clBlack
//默认是按左下角的点,为透明色
//大小改变后,左下角点的颜色也许改变了
//所有需要指定一下
有些图调整颜色数看看
Picture.Bitmap.PixelFormat := pf24bit;
//默认是按左下角的点,为透明色
//大小改变后,左下角点的颜色也许改变了
//所有需要指定一下
有些图调整颜色数看看
Picture.Bitmap.PixelFormat := pf24bit;
#9
多谢zswang(伴水清清),
原先的透明色放大后变得很奇怪
设置了 Picture.Bitmap.TransparentColor := clBlack 后透明色没变了。
我想透明掉的颜色是(R:0,G:255,B:0),不是对应的设置成
Image[i].Picture.Bitmap.TransparentColor:=clGreen; 吗?怎么不能透明掉?
另外关于图片有时候整张变得很怪的问题,加了 Picture.Bitmap.PixelFormat := pf24bit; 已经解决,谢谢
原先的透明色放大后变得很奇怪
设置了 Picture.Bitmap.TransparentColor := clBlack 后透明色没变了。
我想透明掉的颜色是(R:0,G:255,B:0),不是对应的设置成
Image[i].Picture.Bitmap.TransparentColor:=clGreen; 吗?怎么不能透明掉?
另外关于图片有时候整张变得很怪的问题,加了 Picture.Bitmap.PixelFormat := pf24bit; 已经解决,谢谢
#10
zswang(伴水清清)(专家门诊清洁工) ( 四星(高级)) 信誉:175 2006-9-19 10:28:56 得分:50
?
Picture.Bitmap.TransparentColor := clBlack
//默认是按左下角的点,为透明色
===================
UP !有理 [测试了]
?
Picture.Bitmap.TransparentColor := clBlack
//默认是按左下角的点,为透明色
===================
UP !有理 [测试了]
#1
上面的代码应该是缩小啦,放大是
Height:= round(Height*1.5);
Width:= round(Width*1.5);
Height:= round(Height*1.5);
Width:= round(Width*1.5);
#2
没见过,顶下吧
#3
顶起,还有一个DBGridEh ,如何让滚轮滚动的时候,当前数据记录不要变(只响应滚动条的拉动)。这个问题也是拖了好久没解决,悲惨
#4
位图放大要特殊处理的.
#5
某些图象放大后形状基本不失真,效果很好,但是某些图象变得只剩外行看得出,里面的点全变成一种颜色涂鸦上去的。
-----------------------------------------
这个应该是把图象(转化到位图)的边局最长的颜色 给 透明了。引起的…… 本人理解的
-----------------------------------------
这个应该是把图象(转化到位图)的边局最长的颜色 给 透明了。引起的…… 本人理解的
#6
vividw(vividw)能具体说下位图放大的特殊处理吗?或者贴点简单的代码参考下?
hangzhou_hammer() ,直接设置 Image 的Transparent 为 true,图片是按左上角那一点来进行透明的是吧?你说的 把图象(转化到位图)的边局最长的颜色 给 透明了 我不是很清楚是什么意思
hangzhou_hammer() ,直接设置 Image 的Transparent 为 true,图片是按左上角那一点来进行透明的是吧?你说的 把图象(转化到位图)的边局最长的颜色 给 透明了 我不是很清楚是什么意思
#7
位图缩放 都会有损 需要处理的
可以用 gdi函数试试效果
BitBlt 或者
stretchdibits
SetStretchBltMode
可以用 gdi函数试试效果
BitBlt 或者
stretchdibits
SetStretchBltMode
#8
Picture.Bitmap.TransparentColor := clBlack
//默认是按左下角的点,为透明色
//大小改变后,左下角点的颜色也许改变了
//所有需要指定一下
有些图调整颜色数看看
Picture.Bitmap.PixelFormat := pf24bit;
//默认是按左下角的点,为透明色
//大小改变后,左下角点的颜色也许改变了
//所有需要指定一下
有些图调整颜色数看看
Picture.Bitmap.PixelFormat := pf24bit;
#9
多谢zswang(伴水清清),
原先的透明色放大后变得很奇怪
设置了 Picture.Bitmap.TransparentColor := clBlack 后透明色没变了。
我想透明掉的颜色是(R:0,G:255,B:0),不是对应的设置成
Image[i].Picture.Bitmap.TransparentColor:=clGreen; 吗?怎么不能透明掉?
另外关于图片有时候整张变得很怪的问题,加了 Picture.Bitmap.PixelFormat := pf24bit; 已经解决,谢谢
原先的透明色放大后变得很奇怪
设置了 Picture.Bitmap.TransparentColor := clBlack 后透明色没变了。
我想透明掉的颜色是(R:0,G:255,B:0),不是对应的设置成
Image[i].Picture.Bitmap.TransparentColor:=clGreen; 吗?怎么不能透明掉?
另外关于图片有时候整张变得很怪的问题,加了 Picture.Bitmap.PixelFormat := pf24bit; 已经解决,谢谢
#10
zswang(伴水清清)(专家门诊清洁工) ( 四星(高级)) 信誉:175 2006-9-19 10:28:56 得分:50
?
Picture.Bitmap.TransparentColor := clBlack
//默认是按左下角的点,为透明色
===================
UP !有理 [测试了]
?
Picture.Bitmap.TransparentColor := clBlack
//默认是按左下角的点,为透明色
===================
UP !有理 [测试了]