你的pDC应该是对话框的吧,WindowsMediaPlar插件是对话框上的另一个子窗口,所以要取得WindowsMediaPlar插件的pDC才行
WindowsMediaPlar插件的窗口句柄hwnd,pDC=GetDC(hwnd)
按这个方案,试试
rgb=::GetPixel(::GetDC(0),Posx ,Posy);
r=GetRValue(rgb);
g=GetGValue(rgb);
b=GetBValue(rgb);
你这个题目不小,首先你要知道这种文件的格式。然后再按格式打开,并找到数据的存放区域,不按要求才能读出数据。比如,许多书上都介绍的位图文件,有文件头和数据区组成,你需要知道文件头有多大,然后数据区的开始位置需要找到,还应清楚图像信息的放置是从后到前的,也就是说信息是倒置的。另外,jpg图像也有相应的格式,找一本图像处理的书,看看各种图像的格式。
两种方法可以解决:
一、你的图被显示到窗体上或者控件里,获得窗口或控件的DC,然后用GetPixel函数得到一个像素的值,这个像素应该是你确认它在背景上。
例如:
//获取窗体DC
CDC pDC = GetDC();
//获取颜色值
COLORREF cr = pDC->GetPixel(CPoint(1,1));
//提取RGB分量
BYTE btR = GetRValue(cr);//R值
BYTE btG = GetGValue(cr);//G值
BYTE btB = GetBValue(cr);//B值
//如果btR==255,而btG==0、btB==0,则说明是红色
//如果btR==255,而btG==255、btB==0,则说明是**
二、如果你打开图时,已经获得了它的DIB值,那么就可以直接读图中的像素值了,这样同样可以获得到某一个点的颜色值了。
在 VC++ 中,可以使用 MFC 库提供的 CImage 类来判断是否为空白以及读取当前大小。
判断是否为空白
要判断一张是否为空白,可以使用 CImage 类的 GetSize() 方法获取的大小,然后遍历的每个像素点,判断像素点的 RGB 值是否为 255(即白色)。如果所有像素点的 RGB 值都为 255,则说明该为空白。
示例代码如下:
CImage image;
imageLoad(_T("testjpg")); // 加载
// 获取大小
int width = imageGetWidth();
int height = imageGetHeight();
bool isBlank = true; // 是否为空白
// 遍历每个像素点
for (int i = 0; i < width; i++) {
for (int j = 0; j < height; j++) {
// 获取像素点的 RGB 值
COLORREF color = imageGetPixel(i, j);
int r = GetRValue(color);
int g = GetGValue(color);
int b = GetBValue(color);
// 判断像素点的 RGB 值是否为白色
if (r != 255 || g != 255 || b != 255) {
isBlank = false;
break;
}
}
if (!isBlank) {
break;
}
}
if (isBlank) {
// 空白
}
else {
// 非空白
}
上述代码中,我们首先使用 CImage 类的 Load() 方法加载了一张,然后使用 GetSize() 方法获取了的大小。接着,我们使用双重循环遍历了的每个像素点,并判断像素点的 RGB 值是否为白色。如果所有像素点的 RGB 值都为白色,则将 isBlank 标记为 true,否则将其标记为 false。最后,根据 isBlank 的值来判断是否为空白。
需要注意的是,这种判断方式并不是非常准确,因为有可能存在非常浅的颜色(比如灰色)或者透明度不为 0 的像素点。因此,判断是否为空白需要根据具体的应用场景进行具体分析和处理。
读取当前大小
要读取一张的大小(即占用硬盘容量大小),可以使用 CImage 类的 GetFileSize() 方法获取。该方法返回的是占用硬盘容量大小(单位为字节),需要将其转换为 KB 才能表示为人类可读的格式。
示例代码如下:
CImage image;
imageLoad(_T("testjpg")); // 加载
// 获取大小(单位为字节)
int fileSize = imageGetFileSize();
// 转换为 KB
double fileSizeKB = fileSize / 10240;
// 输出大小(保留两位小数)
printf("The size of the image is %2f KB\n", fileSizeKB);
以上就是关于用VC如何获得正在播放的视频中某一点的颜色数据全部的内容,包括:用VC如何获得正在播放的视频中某一点的颜色数据、VC 如何获得Picture控件的图片的指针信息,我现在获得的rgb不对。、VC 获取24位真彩色的个点RGB分量值等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)