求助!为什么会出错?
void CTBitmapDlg::OnTest()
{
HDC MemDC;
char text1[20];
char * text;
text=text1;
strcpy(text,"TEST\0");
int cxImage = 300;
int cyImage = 400;
int numPixels = cxImage*cyImage;
BYTE *pText = new BYTE[numPixels];
for(int i = 0 ; i < numPixels; i++)
{
pText[i] = 0;
}
HBITMAP bitmap = CreateBitmap(cxImage, cyImage, 0, 8, pText);
if (bitmap)
{
MemDC = CreateCompatibleDC(NULL);
SelectObject(MemDC,bitmap);
SetBkMode(MemDC,TRANSPARENT);
SetTextColor(MemDC, RGB(0xff,0,0));
HFONT hFont;
hFont = CreateFont(100, 0, 0, 0, FW_BOLD, FALSE, FALSE, FALSE,
0, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS,
DEFAULT_QUALITY, DEFAULT_PITCH, text);
HFONT hfont = (HFONT)::SelectObject(MemDC, hFont);
TextOut(MemDC,30,20,text,strlen(text));
//把数据拷回
HBITMAP *bmp = (HBITMAP*)SelectObject(MemDC,bitmap);
//这儿错了
long len = GetBitmapBits(*bmp,numPixels,(PBYTE)pText);
//int len = GetDIBits(MemDC,bitmap,1,lpbi->biHeight,(PBYTE)pText,(LPBITMAPINFO)lpbi,DIB_RGB_COLORS);
if(len == 0)
{
AfxMessageBox("Wrong");
}
else
{
RGBTRIPLE* prgbText = (RGBTRIPLE*) pText;
for (int i=0; i<numPixels; i++, prgbText++)
{
if( (prgbText->rgbtGreen != 0 )|| (prgbText->rgbtBlue != 0) ||( prgbText->rgbtRed != 0))
{
/*
alpha就是透度,公式如下:a1为字幕透度 a2为视频透度,此处假设视频不透,
为1.0,RGB1为字幕颜色,RGB2为视频颜色,RGB为合成后的颜色,则
RGB = a1 * RGB1 + (1-a1)*RGB2
如果字幕不透,则a1为1.0,其结果是字幕完全遮盖视频
*/
//test
prgbText->rgbtGreen = 255;//prgbText->rgbtGreen;
prgbText->rgbtBlue = 0;//prgbText->rgbtBlue;
prgbText->rgbtRed = 0;//prgbText->rgbtRed;
}
}
}
}
delete pText;
}
{
HDC MemDC;
char text1[20];
char * text;
text=text1;
strcpy(text,"TEST\0");
int cxImage = 300;
int cyImage = 400;
int numPixels = cxImage*cyImage;
BYTE *pText = new BYTE[numPixels];
for(int i = 0 ; i < numPixels; i++)
{
pText[i] = 0;
}
HBITMAP bitmap = CreateBitmap(cxImage, cyImage, 0, 8, pText);
if (bitmap)
{
MemDC = CreateCompatibleDC(NULL);
SelectObject(MemDC,bitmap);
SetBkMode(MemDC,TRANSPARENT);
SetTextColor(MemDC, RGB(0xff,0,0));
HFONT hFont;
hFont = CreateFont(100, 0, 0, 0, FW_BOLD, FALSE, FALSE, FALSE,
0, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS,
DEFAULT_QUALITY, DEFAULT_PITCH, text);
HFONT hfont = (HFONT)::SelectObject(MemDC, hFont);
TextOut(MemDC,30,20,text,strlen(text));
//把数据拷回
HBITMAP *bmp = (HBITMAP*)SelectObject(MemDC,bitmap);
//这儿错了
long len = GetBitmapBits(*bmp,numPixels,(PBYTE)pText);
//int len = GetDIBits(MemDC,bitmap,1,lpbi->biHeight,(PBYTE)pText,(LPBITMAPINFO)lpbi,DIB_RGB_COLORS);
if(len == 0)
{
AfxMessageBox("Wrong");
}
else
{
RGBTRIPLE* prgbText = (RGBTRIPLE*) pText;
for (int i=0; i<numPixels; i++, prgbText++)
{
if( (prgbText->rgbtGreen != 0 )|| (prgbText->rgbtBlue != 0) ||( prgbText->rgbtRed != 0))
{
/*
alpha就是透度,公式如下:a1为字幕透度 a2为视频透度,此处假设视频不透,
为1.0,RGB1为字幕颜色,RGB2为视频颜色,RGB为合成后的颜色,则
RGB = a1 * RGB1 + (1-a1)*RGB2
如果字幕不透,则a1为1.0,其结果是字幕完全遮盖视频
*/
//test
prgbText->rgbtGreen = 255;//prgbText->rgbtGreen;
prgbText->rgbtBlue = 0;//prgbText->rgbtBlue;
prgbText->rgbtRed = 0;//prgbText->rgbtRed;
}
}
}
}
delete pText;
}
...全文
相关推荐
jquery 为什么使用jQuery,优点 可以做什么,
#### 为什么使用jQuery?- **简化DOM操作**:jQuery提供了丰富的API用于简化DOM树的操作,使得开发者能够更加容易地添加、删除或修改页面元素。
为什么你的代码总是出错?或许你忽视了这些细节!
大家好,今天咱们聊一个程序员常常面临的问题——代码出错!很多时候,我们以为自己已经做得很完美,写的代码也非常干净简洁,但总是出现莫名其妙的错误。你有没有觉得自己的代码像是一个精密的机器,按照你设定的步骤应该顺利运行,但总是出现各种“意外”,甚至是那些你自己都没法理解的bug?今天,就让我带着一颗爆笑的心情,一起扒一扒代码中常见的那些细节问题,看看是哪些“阴魂不散”的小细节,悄悄坑了我们!别担心,我们会从头到尾一起调侃这些坑,同时给出实际的代码案例和讲解。你还等什么?
maven打包出错解决办法,亲测绝对可以!
**为什么要搭建Maven私服**:企业内部项目通常有私有的依赖库,直接连接外部公共仓库会增加网络延迟,且可能涉及安全问题。搭建Maven私服可以作为中间层,缓存公共依赖,同时托管内部私有库。2.
为什么打开word出错,word文档打开出错?.docx
Word 文档打开出错的解决方法在日常办公中,我们经常会遇到 Word 文档打开出错的问题,例如文档无法打开、程序崩溃、或者显示错误信息等情况。
为什么Ghost系统出错?
在进行系统备份和恢复时,保持硬件的良好状态,选用合适的工具,以及确保系统的更新和维护,都是避免Ghost系统出错的关键步骤。


