解决方案 »
- 在使用SDL显示视频数据 频繁调用SDL_SetVideoMode方法设置视频的显示大小 会有什么样可能的结果?
- 定义参数的问题。指针的指针————急
- 请教:数组和字符串怎么比较啊?谢谢!
- 遇到怪问题了,请教!
- 难题 非高手勿近
- 请教关于CString和char之间的问题!!
- 请问我想让CListCtrl中的项按某个方式排序列,或将某项上移或下移, 有什么好办法吗?
- 在菜单中增加位图,这样写对吗?
- 如何使用odbc api得知结果集的记录数?
- 图片怎么显示不出来呀
- 串口接收数据立马崩溃
- 设置一个BUTTON按钮,作用“加载任意一个选择的TXT”,另设置一个BUTTON按钮,作用“获取上次加载过得TXT,已获得其路径及文件名,并作其他操作”
1.在图片的原始RGB数据中修改在V型线上的每一点的像素值,一条线为蓝色,一条线为红色。
2.写一个函数,函数的参数有六个,第一个是原始RGB数据的地址,第二个和第三个是图片的宽和高,后面三个参数是V型三个点的位置,类型是CPoint。
3.函数的具体实现:???
4.函数的调用是在原始RGB数据写入图片文件之前,将参数传入。
按 y = kx+b 逐点移动X 获得y , 然后使用x,y计算出线性地址(要考虑对齐问题), 替换相应的像素数据(BMP的记忆中好像是BGR)还有可以创建DC 和位图 按GDI的方法绘制
{
COLORREF col;
int rightk;
int rightb;
int leftk;
int leftb;
rightk = rightV.y/rightV.x;
rightb = 0;
leftk = (leftV.y-downV.y)/(leftV.x-downV.x);
leftb = 0;
int **p = new int*[m_nImageWidth];
for(int i=0; i<m_nImageWidth; ++i)
p[i] = new int[m_nImageHeight];
for(int i=0;i<m_nImageWidth;i++)
{
for(int j=0;j<m_nImageHeight;j++)
{
//[j][k]=(j+1)*(k+1);
if(i == leftV.x)
{
SetPixel(NULL,leftV.x,/*(leftV.y-downV.y)/(leftV.x-downV.x)*/-(rightV.y/rightV.x)*leftV.x,RGB(0,255,0));
leftV.x++;
}
if( i == rightV.x)
{
SetPixel(NULL,rightV.x,(rightV.y/rightV.x)*rightV.x,RGB(255,0,0));
rightV.x--;
} }
}}这代码可以执行,可是线没画出来,,能帮我修正修正吗??
或者自己搞俩方程,逐个改变像素值----一般图片是 rgb.rgb,rgb...这么存的,我见过rrrrrrrrrr......gggggggg......bbbbbbb这么存的
{
CClientDC dc(this);
CDC memDC;
memDC.CreateCompatibleDC(&dc);
// new line color
HPEN hpen=CreatePen(PS_SOLID,1,RGB(255,255,255));
HPEN oldp=(HPEN)memDC.SelectObject(hpen);
// put the hbitmap in memDC
HBITMAP old=(HBITMAP)memDC.SelectObject(hbmp);
// draw V
memDC.Moveto(p1);
memDC.LineTo(p2);
memDC.LineTo(p3);
// release
memDC.SelectObject(oldp);
memDC.SelectObject(old);
// rewdraw
// Invalidate();
}// caller
DrawV(m_bitmap,CPoint(20,20),CPoint(100,100),CPoint(80,80));
Invalidate();
void CPgmDlg::DrawV(HBITMAP hbmp,CPoint p1,CPoint p2, CPoint p3)
{
CClientDC dc(this);
// CDC memDC;
// memDC.CreateCompatibleDC(&dc);
// new line color
HPEN hpen=CreatePen(PS_SOLID,1,RGB(255,255,255));
HPEN oldp=(HPEN)dc.SelectObject(hpen);
// put the hbitmap in memDC
// HBITMAP old=(HBITMAP)memDC.SelectObject(hbmp);
// draw V
dc.MoveTo(p1);
dc.LineTo(p2);
dc.LineTo(p3);
// release
dc.SelectObject(oldp);
// memDC.SelectObject(old);
// redraw
// Invalidate();
}