在视图中打印图形时为什么实线会像虚线

gb102 2005-03-23 10:33:13
我用MM_TEXT模式在视图中绘制的图形在显示设备上显示时是直线,但是当我打印时却发现打印和显示的效果不一样,打印出的图形有点像虚线,由许多小点组成,但是又和虚线不同,比虚线要密。不知道是不是和绘图模式有关,请大家帮帮忙,我也不知道怎么办了,很急,最好能够不改变绘图模式就解决这个问题
...全文
202 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
gb102 2005-04-02
  • 打赏
  • 举报
回复
有没有不改变映射模式就可以解决这个问题的方法啊,我现在的程序比较大而且耦合性太强,如果要改变映射模式就要改许多地方
菜牛 2005-03-24
  • 打赏
  • 举报
回复
是不是颜色的问题,搞成半色调了。
bobob 2005-03-23
  • 打赏
  • 举报
回复
重载OnPrepareDC

void CPrintView::OnPrepareDC(CDC* pDC, CPrintInfo* pInfo)
{
CView::OnPrepareDC(pDC, pInfo);
pDC->SetMapMode(MM_ANISOTROPIC);

CSize size = CSize(800, 560);
pDC->SetWindowExt(size);

int xLogPixPerInch = pDC->GetDeviceCaps(LOGPIXELSX);
int yLogPixPerInch = pDC->GetDeviceCaps(LOGPIXELSY);
long xExt = (long)size.cx * xLogPixPerInch/96 ;
long yExt = (long)size.cy * yLogPixPerInch/96 ;
pDC->SetViewportExt((int)xExt, (int)yExt);
}
老夏Max 2005-03-23
  • 打赏
  • 举报
回复
最好不要使用MM_TWIPS模式,这种模式一般是用在排版上的,很少有人使用,并且转换起来比较麻烦!
老夏Max 2005-03-23
  • 打赏
  • 举报
回复
如果是固定的大小的可以使用下面的映射方式:(引自MSDN)
MM_HIENGLISH Each logical unit is converted to 0.001 inch. Positive x is to the right; positive y is up.


MM_HIMETRIC Each logical unit is converted to 0.01 millimeter. Positive x is to the right; positive y is up.


MM_ISOTROPIC Logical units are converted to arbitrary units with equally scaled axes; that is, 1 unit along the x-axis is equal to 1 unit along the y-axis. Use the SetWindowExt and SetViewportExt member functions to specify the desired units and the orientation of the axes. GDI makes adjustments as necessary to ensure that the x and y units remain the same size.


MM_LOENGLISH Each logical unit is converted to 0.01 inch. Positive x is to the right; positive y is up.


MM_LOMETRIC Each logical unit is converted to 0.1 millimeter. Positive x is to the right; positive y is up.
老夏Max 2005-03-23
  • 打赏
  • 举报
回复
也许是和映射模式有关吧。
MM_TEXT是1对1的映射,线也是由点组成的!
galois_godel 2005-03-23
  • 打赏
  • 举报
回复
换MM_TWIPS试试
xuzheng318 2005-03-23
  • 打赏
  • 举报
回复
帮楼主顶!关注!
j805 2005-03-23
  • 打赏
  • 举报
回复
我也碰到这个问题了,仔细看是很细的锯齿线。
关注。
关于图形 的二次图形消隐和相关文档 长方体的自隐藏线消隐上机指导 1. 实验目的与要求:掌握长方体的表面模型的建立;掌握三维图形的显示流程;掌握长方体自消隐的算法。 2. 实验步骤: (1)长方体表面模型的定义 三维齐次坐标结构的定义,面结构的定义,面结构添加可见性属性;顶点表的定义,面表、与顶点表的关系。 (2)几何变换的实现 分别对顶点进行绕X轴旋转和绕Y轴旋转,旋转角度为参数,以实现轴测投影。 (3)消隐 计算每个面的外法向量,与视向量进行点积,给该面的可见性属性赋值。 (4)投影变换的实现 平行投影正投影的投影变换公式及矩阵,要求以XOY平面为投影平面,Z轴正方向为视线方向。 (3)窗口-视区变换的实现 窗口大小的选取——一般将所有图形都取在窗口内;注意投影变换投影平面的选取,投影平面上的坐标与视区坐标x,y的对应。 (4)图形显示 显示面表的每一个面,对于不可见面用虚线绘制该面各边,对于可见面用实线绘制各边。 3. 具体任务 在已给出程序Draw3D2,在视图分别添加绕X轴旋转和绕Y轴旋转的函数void RotateX(int angle)和void RotateY(int angle);在视图添加计算外法向量的函数HOMOCOORD GetN(HOMOCOORD p1, HOMOCOORD p2, HOMOCOORD p3),其返回值为外法向量。注意面结构添加的可见性属性,注意显示图形对于不可见和可见面的处理。 4. 说明 绕X轴的旋转变化的公式实现: 考虑到旋转变化不影响w分量,可得 其他变换类似。对顶点表每个顶点进行更新。 计算外法向量函数的: P1,p2,p3为面上逆针依次相连的三个顶点,由此外法向量N=(p2-p1)×(p3-p2); 若令x1=p2.x-p1.x, y1=p2.y-p1.y, z1=p2.z-p1.z; x2=p3.x-p2.x, y2=p3.x-p2.x, z2=p3.x-p2.x; 则外法向量可以由下列行列式求出 即

19,468

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧