能不能准确得到已知屏幕两点LineTo经过的像素坐标?也就是说GDI的LineTo实现的原理是什么?
解决方案 »
- 如何实现点击帮助菜单时弹出chm文件
- DllCanUnloadNow()被系统调用吗?
- HGE 2D游戏引擎 如何激活或者置顶游戏窗口
- 基于多文档的编程每建一个新的文档就是一个新的线程吗?
- 为什么一个多网卡的服务器一般都在同一个端口建立多个监听套接字
- ¥¥¥¥如何以原子的方式同时锁住两个互斥体?
- 怎么让Win32 Dynamic-Link Library项目支持CString?
- 请问在vc中怎样追踪调试sql 存储过程?
- 我在一个基于对话框的程序中加入了一个RichEdit控件,程序接无法运行,且什么提示也没有?
- 资料保存:☆读硬盘序列号☆ (也许以后有用)
- 我是初学者,想用VC写一个打字的程序SDI文档的,请教各位编写的原理。
- 这个错误如何改正?
a(x0,y0)
b(x1,y1)
c(x,y)
那么
(x-x0)/(y-y0)=(x1-x0)/(y1-y0)
y1=y0表示水平线
有几种直线转化算法,比如:
template <class TPicture> //
void _line_fast(const TPicture& iter,int x0,int y0,int x1,int y1,value_type cValue)
{
int x_inc,y_inc; int x =x0;
int y =y0;
int dx = x1-x0;
int dy = y1-y0;
if (dx>=0)
{
x_inc = 1;
}
else
{
x_inc = -1;
dx = -dx;
} if (dy>=0)
{
y_inc = 1;
}
else
{
y_inc = -1;
dy = -dy;
} int dx2 = dx + dx;
int dy2 = dy + dy; if (dx > dy)
{
int error = dy2 - dx;
for (int index=0;index<dx;++index)
{
iter.set(x,y,cValue);
if (error >= 0)
{
error-=dx2;
y+=y_inc;
}
error+=dy2;
x+=x_inc;
}
}
else
{
int error = dx2 - dy;
for(int index=0;index<dy;++index)
{
iter.set(x,y,cValue);
if (error >= 0)
{
error-=dy2;
x+=x_inc;
}
error+=dx2;
y+=y_inc;
}
}
}