谢啦
解决方案 »
- 如何得到扩展桌面的分辩率MFC下
- OpenThreadToken()的困惑
- 初学者问题:(请求高手指点)
- 请教如何让 CFormView 里的对话框跟随主程序大小的变化而变化?
- 自动关机问题
- 用程序可不可以控制同一台机器上不同的显示器现实不同的内容?
- 为何注册为服务程序时编译出错?
- 在VC里类似"显示属性"的那种分页窗体怎么制作?
- 我的 .Cpp .h 文件提图标被修改了,请问怎样怎样找回来?
- 我刚开始学习DirectDraw,请问....
- List 设焦点选中第一行后,我点向下的箭头皱键时,要点两下才移致第二行,如何我点一点就到第二行呢?
- 大家帮忙解释一LPARAM lParam; 中LPARAM是什么类型
void CxxxDlg::OnPaint()
{
CRect rect;
GetClientRect(&rect);
const int n=5000; CPaintDC dc(this);
CPen pen(0,1,RGB(0,0,255));
CPen* pOldPen=dc.SelectObject(&pen); int nWidth=rect.Width();
int nHeight=rect.Height();
dc.SetViewportOrg(nWidth/2,nHeight-30);
POINT pt[2*n];
for(int i = -1*n; i < n; i++)
{
long cx = (i * nWidth / 2 * 32) / n;
long cy = cx * cx / (-32);
pt[i + n].x = cx;
pt[i + n].y = cy;
}
dc.Polyline(pt,2*n);
CDialog::OnPaint();
}
}
{
CPaintDC dc(this); // 用于绘制的设备上下文 int x1 = 100;
int y1 = 100;
int x2 = 200;
int y2 = 200;
int x3 = 300;
int y3 = 150; double a = (double)(y1*x2 + y2*x3 + y3*x1 - y3*x2 - y2*x1 - y1*x3) / (x1*x1*x2 + x2*x2*x3 + x3*x3*x1 - x3*x3*x2 - x2*x2*x1 - x1*x1*x3); double b = -(double)(y1*x2*x2 + y2*x3*x3 + y3*x1*x1 - y3*x2*x2 - y2*x1*x1 - y1*x3*x3) / (x1*x1*x2 + x2*x2*x3 + x3*x3*x1 - x3*x3*x2 - x2*x2*x1 - x1*x1*x3) ; double c = (double)(y1*x2*x2*x3 + y2*x3*x3*x1 + y3*x1*x1*x2 - y3*x2*x2*x1 - y2*x1*x1*x3 - y1*x3*x3*x2) / (x1*x1*x2 + x2*x2*x3 + x3*x3*x1 - x3*x3*x2 - x2*x2*x1 - x1*x1*x3) ; for(int x=100;x <1024;x+=1)
{
double y = a*x*x + b*x + c;
dc.SetPixel(x,y,RGB(0,0,0));
}
} 改成画线会更好一些
int y1 = 398;
int x2 = 390;
int y2 = 312;
int x3 = -8;
int y3 = 311; 这种情况下,抛物线的Y坐标会明显偏移很远,这种情况怎么解决?
例如将参数改成下面数据将无法正常绘制。
int x1 = 191;
int y1 = 398;
int x2 = 390;
int y2 = 312;
int x3 = -8;
int y3 = 311;
double a = (double)(y1*x2 + y2*x3 + y3*x1 - y3*x2 - y2*x1 - y1*x3) / (x1*x1*x2 + x2*x2*x3 + x3*x3*x1 - x3*x3*x2 - x2*x2*x1 - x1*x1*x3);
double b = -(double)(y1*x2*x2 + y2*x3*x3 + y3*x1*x1 - y3*x2*x2 - y2*x1*x1 - y1*x3*x3) / (x1*x1*x2 + x2*x2*x3 + x3*x3*x1 - x3*x3*x2 - x2*x2*x1 - x1*x1*x3) ;
double c = (double)(y1*x2*x2*x3 + y2*x3*x3*x1 + y3*x1*x1*x2 - y3*x2*x2*x1 - y2*x1*x1*x3 - y1*x3*x3*x2) / (x1*x1*x2 + x2*x2*x3 + x3*x3*x1 - x3*x3*x2 - x2*x2*x1 - x1*x1*x3) ;
for(int x=100;x <1024;x+=1)
{
double y = a*x*x + b*x + c;
pDC->SetPixel(x,y,RGB(0,0,0));
} 甚至改成如下也都不能工作,好像只能限制在一个很小区间内,甚至整体移动了以后也无法正常工作。
int x1 = 183;
int y1 = 373;
int x2 = 330;
int y2 = 553;
int x3 = 553;
int y3 = 229;
例如将参数改成下面数据将无法正常绘制。
int x1 = 191;
int y1 = 398;
int x2 = 390;
int y2 = 312;
int x3 = -8;
int y3 = 311;
double a = (double)(y1*x2 + y2*x3 + y3*x1 - y3*x2 - y2*x1 - y1*x3) / (x1*x1*x2 + x2*x2*x3 + x3*x3*x1 - x3*x3*x2 - x2*x2*x1 - x1*x1*x3);
double b = -(double)(y1*x2*x2 + y2*x3*x3 + y3*x1*x1 - y3*x2*x2 - y2*x1*x1 - y1*x3*x3) / (x1*x1*x2 + x2*x2*x3 + x3*x3*x1 - x3*x3*x2 - x2*x2*x1 - x1*x1*x3) ;
double c = (double)(y1*x2*x2*x3 + y2*x3*x3*x1 + y3*x1*x1*x2 - y3*x2*x2*x1 - y2*x1*x1*x3 - y1*x3*x3*x2) / (x1*x1*x2 + x2*x2*x3 + x3*x3*x1 - x3*x3*x2 - x2*x2*x1 - x1*x1*x3) ;
for(int x=100;x <1024;x+=1)
{
double y = a*x*x + b*x + c;
pDC->SetPixel(x,y,RGB(0,0,0));
} 甚至改成如下也都不能工作,好像只能限制在一个很小区间内,甚至整体移动了以后也无法正常工作。
int x1 = 183;
int y1 = 373;
int x2 = 330;
int y2 = 553;
int x3 = 553;
int y3 = 229;
问题再这里。
http://topic.csdn.net/u/20080821/09/af4a817d-6405-4854-ba5c-a5b747aabcfc.html