如何正确使用GetPixel() 函数

huhairui3 2004-01-13 10:06:20
大家好,在使用GetPixel()函数时出现了问题,我的目的是想采用GetPixel()函数获取Edit文本框某点的颜色信息。但是GetPixel() 的返回值始终是-1,我在查了MSN后发现GetPixel函数的说明“The pixel must be within the boundaries of the current clipping region"一句话,但我现在不明白如何确定"current clipping region",请高手指点。
...全文
2634 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Wyhshp 2004-01-15
  • 打赏
  • 举报
回复
请不要在GetPixel()执行之前设置断点。
hell190109 2004-01-14
  • 打赏
  • 举报
回复
CWnd *p = GetDlgItem(IDC_EDIT1);
CDC *pDC = p->GetDC();
pDC->GetPixel(x,y);
ehom 2004-01-14
  • 打赏
  • 举报
回复
要绘制的窗体被挡住了?或者是在屏幕之外?
huhairui3 2004-01-14
  • 打赏
  • 举报
回复
是VC++的函数,我采用的是Win32SDK方式,和hell190109 的方法一样,但是返回值始终是4294967295也就是-1,我查了MSN好像要设置当前裁剪区域,我的源程序如下:

hCaptionEdit = GetDlgItem(hDlg, IDC_EDIT_CAPTION);
HDC hdcEdit = GetDC(hCaptionEdit);
RECT RectEdit;
GetClientRect(hCaptionEdit, &RectEdit);
int i = 0;
int j = 0;
COLORREF tempColor = 0;

//释放文字点阵数组
if(m_pWordPointData)
{
free(m_pWordPointData);
m_pWordPointData = NULL;
m_dwPointNums = 0;
}

//初始化文字点阵数组
m_pWordPointData = (pWORDPOINTDATA)malloc(sizeof(WORDPOINTDATA));

//设置当前设备裁剪区域
HRGN hrgn = CreateRectRgn(RectEdit.left , RectEdit.top , RectEdit.right , RectEdit.bottom );

int he = ExtSelectClipRgn(hdcEdit, hrgn, RGN_OR);

RECT tempRect;
GetClipBox(hdcEdit, &tempRect);//***返回值始终是0,0,0,0的矩形,请高手指点***

//扫描文本编辑框的矩形区域的文字图形
for( i = RectEdit.top ; i< RectEdit.bottom ; i++)
{
for( j = RectEdit.left ; j < RectEdit.right ; j++)
{
/*
扫描文本编辑框的矩形区域的文字图形
*/
he = PtVisible(hdcEdit, i, j);//***返回值始终是0,也就是说当前点不在裁剪区域,请高手指点***

//***此段代码测试GetPixel(hdcEdit, i,j)返回值用,返回值始终是4294967295也就是-1,就是说当前点不在裁剪区域,
//请高手指点***
if(tempColor != GetPixel(hdcEdit, i,j))
{
tempColor = GetPixel(hdcEdit, i, j);
if (tempColor == -1)
{
tempColor = 0;
}
}
//****************************

if( tempColor == RGB(0, 0, 0))//判断黑色
{
m_dwPointNums ++;
m_pWordPointData = (pWORDPOINTDATA)realloc(m_pWordPointData,m_dwPointNums * sizeof(WORDPOINTDATA));

//复制图形数据信息
m_pWordPointData[m_dwPointNums-1].MapColor = RGB(255,255,255);
m_pWordPointData[m_dwPointNums-1].MapPoint.x = i;
m_pWordPointData[m_dwPointNums-1].MapPoint.y = j;

}
}

}
zzwu 2004-01-14
  • 打赏
  • 举报
回复
GetPixel()指的是VC++,还是C++ Builder 的函数?

4,504

社区成员

发帖
与我相关
我的任务
社区描述
图形图像/机器视觉
社区管理员
  • 机器视觉
  • 迪菲赫尔曼
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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