GDI绘图实现放大缩小的功能 当前我用已有的坐标绘制一个图形,然后,要实现放大缩小功能,怎么算放大或缩小后的坐标啊 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 参考这个,乘以坐标乘以一个比例变换矩阵就可以,http://learn.gxtc.edu.cn/NCourse/jxcamcad/cadcam/Mains/main11-2.htm不过比例变换不仅改变大小,还移动图形位置,需要同时进行一次平移变换,保持图形的中心不变, 给你一个我原来用C++做的:void CRectangle::Draw(CDC *pDC, float Scale){ CBrush brush(color); CBrush* pOldBrush = pDC->SelectObject(&brush); pDC->Rectangle(m_begin.x*Scale, m_begin.y*Scale, m_end.x*Scale, m_end.y*Scale); pDC->SelectObject(pOldBrush);} Graphics本身自带的有放大/缩小,但是它是整体放大缩小,就是说线的宽度也会放大/缩小。如果想整体放大,但是线宽度不放大的话,可以参考上边的建议自己做。 这种方法不行啊,只是把坐标放大了,不合适,,-------------|| || .P || ||------------| 像这样的图形,以P为中心,放大N倍,只是乘以一个倍数就不行了, [/Quote] 这种方法不行啊,只是把坐标放大了,不合适,, -------------| | | | .P | | | |------------| 像这样的图形,以P为中心,放大N倍,只是乘以一个倍数就不行了, 假设你要绘制一个点(x:10,y:10),在考虑放大/缩小,偏移的情况下,伪代码如下:Point p = new Point(10,10);//点原始坐标double scale = 0.8;//放大缩小系数Point offset = new Point(0,0) //偏移量Point drawPoint = new Point(p.X * scale + offset.X,p.Y * scale + offset.Y);g.DrawPoint(drawPoint); 我做过好几年的矢量化绘图,GDI、GDI+,WPF都用过,不知道你说的不行是什么意思?讨论下 您在开发绘图软件时,缩放功能用的是如下方法么假设你要绘制一个点(x:10,y:10),在考虑放大/缩小,偏移的情况下,伪代码如下:Point p = new Point(10,10);//点原始坐标double scale = 0.8;//放大缩小系数Point offset = new Point(0,0) //偏移量Point drawPoint = new Point(p.X * scale + offset.X,p.Y * scale + offset.Y);g.DrawPoint(drawPoint); 你说的这个方法应该可行,反正不是简单的放大倍数,CAD的那个放大缩小怎么实现的 我的CSDN博客有相关缩放的文章,欢迎指点,纠正 我的CSDN博客有相关缩放的文章,欢迎指点,纠正 鸡兔同笼问题 求一开源winform框架 web调用excel问题 webbrowser怎么控制显示网站的位置 关闭窗体退出程序时出现的问题 怎么来指定字段的长度啊。高手门~~~ 请问怎么样才能获得上一个月的最后一天的datetime值 在VS的服务器资源管理器中,数据库访问出错,快指教快揭贴 请用中文意思,帮我解释一下用operator实现重载功能,谢谢!!! 可不可以把对象序列化进资源文件?因该怎样做? 关于拉姆达表达式的疑问 求助GMAP.NET?
{
CBrush brush(color);
CBrush* pOldBrush = pDC->SelectObject(&brush);
pDC->Rectangle(m_begin.x*Scale, m_begin.y*Scale,
m_end.x*Scale, m_end.y*Scale);
pDC->SelectObject(pOldBrush);
}
如果想整体放大,但是线宽度不放大的话,可以参考上边的建议自己做。
-------------|
| |
| .P |
| |
|------------|
像这样的图形,以P为中心,放大N倍,只是乘以一个倍数就不行了,
这种方法不行啊,只是把坐标放大了,不合适,,
-------------|
| |
| .P |
| |
|------------|
像这样的图形,以P为中心,放大N倍,只是乘以一个倍数就不行了,
假设你要绘制一个点(x:10,y:10),在考虑放大/缩小,偏移的情况下,伪代码如下:Point p = new Point(10,10);//点原始坐标
double scale = 0.8;//放大缩小系数
Point offset = new Point(0,0) //偏移量Point drawPoint = new Point(p.X * scale + offset.X,p.Y * scale + offset.Y);
g.DrawPoint(drawPoint);
我做过好几年的矢量化绘图,GDI、GDI+,WPF都用过,不知道你说的不行是什么意思?讨论下
假设你要绘制一个点(x:10,y:10),在考虑放大/缩小,偏移的情况下,伪代码如下:Point p = new Point(10,10);//点原始坐标
double scale = 0.8;//放大缩小系数
Point offset = new Point(0,0) //偏移量Point drawPoint = new Point(p.X * scale + offset.X,p.Y * scale + offset.Y);
g.DrawPoint(drawPoint);
我的CSDN博客有相关缩放的文章,欢迎指点,纠正