###请教位图缩放非典型
是这样的 我从数据绘制到窗体一张位图
然后想放大这个内存位图 应该怎么做呢
还有缩小
不用 StrechBlt
急大大们救我
问题点数:0、回复次数:7Top
1 楼DRACULAX05(学习中^-^)回复于 2005-06-01 08:07:45 得分 0
为什么不用StrechBlt?如果怕失真的话可以自己写一个,网上各种插值算法很多,自己查吧Top
2 楼DWDLL(不跟利索)回复于 2005-06-01 23:03:32 得分 0
关键有个坐标系转化问题
不能用 StrechBltTop
3 楼DRACULAX05(学习中^-^)回复于 2005-06-02 01:33:21 得分 0
坐标系转换也就是计算问题,算好要贴图像的哪个位置后再StretchBlt不行吗?
Top
4 楼DWDLL(不跟利索)回复于 2005-06-02 01:52:01 得分 0
我也不晓得怎么做呢??我在想想Top
5 楼DWDLL(不跟利索)回复于 2005-06-02 02:56:56 得分 0
就是类似放大镜的程序 请教楼上大哥 要简单明了的那种
我学编程不长时间 汗!Top
6 楼DWDLL(不跟利索)回复于 2005-06-02 04:53:21 得分 0
关键是哪个就算 弄不明白想干什么
fX = bm.bmWidth;
fY = bm.bmHeight;
if (fX > fY)
{
if(fX > viewX)
{
fY = fY/fX * viewX;
fX = viewX;
}
x = (int)(Rect.Width()-fX) / 2; //位图左上角横坐标
y = (int)(Rect.Height()-fY) / 2; //位图左上角纵坐标
}
else
{
if(fY>viewY)
{
fX = fX/fY*viewY;
fY = viewY;
}
x = (int)(Rect.Width()-fX) /2; //位图左上角横坐标
y = (int)(Rect.Height()-fY) /2; //位图左上角纵坐标
}
SetStretchBltMode(pDC->m_hDC , STRETCH_HALFTONE);
pDC->StretchBlt( x, y, (int)fX, (int)fY, &MemDC, 0, 0, bm.bmWidth, bm.bmHeight, SRCCOPY|MERGECOPY );Top
7 楼DRACULAX05(学习中^-^)回复于 2005-06-03 01:11:40 得分 0
我明白了,你想做类似WindowsXP那个图片浏览器的放大镜功能吧,
最好先在纸上算明白了再编程,我原来做过一个也有些头大,关键是WindowsXP的那个东西只能放大,如果图比窗口小的话会把图原本的放在中间,情况挺多的,这是数学问题了,呵呵Top




