我现在有一系列点坐标
xmin = 60471.15992324;
xmax = 63729.7432062032;
ymax = 333776.096135623;
ymin = 328385.941204131;
我该选用什么映射模式,该如何设置setwindoworg和setviewportorg?
怎么我画出来的总感觉是变形了的?
如何解决精度问题?GDI那些画图不都是int型的么?
xmin = 60471.15992324;
xmax = 63729.7432062032;
ymax = 333776.096135623;
ymin = 328385.941204131;
我该选用什么映射模式,该如何设置setwindoworg和setviewportorg?
怎么我画出来的总感觉是变形了的?
如何解决精度问题?GDI那些画图不都是int型的么?
解决方案 »
- 第七课 静态文本框 图片控件单选按钮 复选框
- 急!ListCtrl中子项不能完全显示????在线等。。。。
- 大侠们帮忙呀,关于activeskin的使用问题。
- 用事件同步线程的问题?
- 请问在vc6中,怎样获得一个注册表的键的所有值的名字,就像.NET中的RegistryKey::GetValueNames.(在线等!)
- 问题:如何在安装COM+应用程序代理时改变服务器地址
- 会做驱动程序开发的哥们来聊聊!
- How to convert Unix code(c) to Windows Vc?Detail?
- 读取word中嵌入的文本文件内容
- 如何在VC中读写dBase数据库?
- 能否给个VC做应用程序插件的例程,很简单的都行,主要是把原理说清楚就行了!
- 100分!求那位大哥帮我调试一个简单的程序,把一个24位的图像转化为256色的灰度图像!急用。
CPen Pen(PS_INSIDEFRAME, 2, RGB(0, 255, 0));
CPen *pPenOld = pDC->SelectObject(&Pen);
double A = 87.56;
double A1 = 1.0 / A;
double u = 255;
CRectrcClient;
GetClientRect(rcClient);
double xR = (double)rcClient.Width() / 2.0;
double yR = (double)rcClient.Height() / 2.0;
int xPos, yPos;
double x = -1.0, y = -1.0;
xPos = (int)((x + 1.0) * xR);
yPos = (int)((1.0 - y) * yR);
pDC->MoveTo(xPos, yPos);
for(x = -1.0; x < 1.0; x +=0.01)
{
if ((abs(x) > 0.0) && (abs(x) < A1) && (x < 0.0))
y = -A * x / (1 + log(A));
else if (abs(x) > 0.0 && abs(x) < A1 && x > 0.0)
y = A * x / (1 + log(A));
else if (abs(x) > A1 && abs(x) < 1.0 && x > 0.0)
y =(1 + log(A * abs(x))) / (1 + log(A));
else if (abs(x) > A1 && abs(x) < 1.0 && x < 0.0)
y = -(1 + log(A * abs(x))) / (1 + log(A));
xPos = (int)((x + 1.0) * xR);
yPos = (int)((1.0 - y) * yR);
pDC->LineTo(xPos, yPos);
}
x = 0.0;
y = 0.0;
xPos = (int)((x + 1.0) * xR);
yPos = (int)((1.0 - y) * yR);
pDC->MoveTo(xPos, yPos);
pDC->SelectObject(pPenOld);
Pen.DeleteObject();
Pen.CreatePen(PS_INSIDEFRAME, 2, RGB(255,0,0));
pPenOld = pDC->SelectObject(&Pen);
for(x = 0.0; x < 1.0; x +=0.01)
{
y = log(1 + u * x) / log(1 + u);
xPos = (int)((x + 1.0) * xR);
yPos = (int)((1.0 - y) * yR);
pDC->LineTo(xPos, yPos);
}
pDC->SelectObject(pPenOld);
Pen.DeleteObject();
待会试试你的方法
我现在图是画出来了
CRect rect;
GetClientRect(rect);
pDC->SetMapMode(MM_ISOTROPIC);
pDC->SetWindowExt((int)(pDoc->xmax-pDoc->xmin),(int)(pDoc->ymax-pDoc->ymin));
pDC->SetViewportExt(rect.right,-rect.bottom);
pDC->SetWindowOrg(pDoc->xmin,pDoc->ymin);
pDC->SetViewportOrg(0,rect.bottom);
这样是没变形,但是图就显示在左边了,不晓得怎样弄的居中显示?
还有用你的方法,之后做放大缩小操作容易么?
pDC->SetViewportOrg((rect.right+rect.left)/2,(rect.bottom+rect.top)/2);
这只是原点在什么地方而已
pDC->SetViewportOrg((rect.right+rect.left)/2,(rect.bottom+rect.top)/2);