社区
C++ Builder
帖子详情
(Byte*)pBitmap->ScanLine(i);这句有什么问题?
redrd
2003-09-06 02:47:10
Byte *ptr1;
pBitmap->PixelFormat=pf24bit;
for(int i=0;i<pBitmap->Height;i++)
{
ptr1=(Byte *)pBitmap->ScanLine[i];
}
//上面写法是否有什么问题啊?我运行多次这个过程就报错:EOutOfResources:参数错误.
...全文
41
11
打赏
收藏
(Byte*)pBitmap->ScanLine(i);这句有什么问题?
Byte *ptr1; pBitmap->PixelFormat=pf24bit; for(int i=0;iHeight;i++) { ptr1=(Byte *)pBitmap->ScanLine[i]; } //上面写法是否有什么问题啊?我运行多次这个过程就报错:EOutOfResources:参数错误.
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
ccrun.com
2003-10-20
打赏
举报
回复
struct RGB //定义一个RGB颜色结构
{
byte BlueColor;
byte GreenColor;
byte RedColor;
};
RGB *pRGBLine;
pBitmap->PixelFormat = pf24bit;//24位真彩色模式
for(i = 0; i < pBitmap->Height; i++)
{
pRGBLine = (RGB *)pBitmap->ScanLine[i];
//pRGBLine[j].RedColor //红色
//pRGBLine[j].GreenColor //绿色
//pRGBLine[j].BlueColor //蓝色
}
weibz0525
2003-10-20
打赏
举报
回复
1.pBitmap是否载入了图象?
2.tBitmap1的width和height是否已经附值?
3.ptr2=<Byte*>(tBitmap1->ScanLine[i+y1]);
如果pBitmap和tBitmap1的height相同,y1又是大于0的,
当ptr1=<Byte*>(pBitmap->ScanLine[pBitmap->Height]);,那么ptr2肯定会越界。指针当然报错了。
4.同理,下面那个ptr[x]里面的x1也是一样。
redrd
2003-10-17
打赏
举报
回复
????????????????????
就是上面的代码,调用几十次就会出错!!
TopCoderONE
2003-10-17
打赏
举报
回复
不用这么麻烦吧,在WIN98系统以上,使用SDK就可以实现吧。
redrd
2003-10-17
打赏
举报
回复
void __fastcall DrawScreen::TransparentBmp(Graphics::TBitmap* pBitmap,Graphics::TBitmap* tBitmap1,int iDiv,int x1,int y1)
{
//透明效果
try
{
Byte *ptr1,*ptr2;
//iDiv 透明度1-100
//tBitmap1新图
pBitmap->PixelFormat=pf24bit;
tBitmap1->PixelFormat=pf24bit;
for(int i=0;i<pBitmap->Height;i++)
{
ptr1=<Byte*>(pBitmap->ScanLine[i]);
ptr2=<Byte*>(tBitmap1->ScanLine[i+y1]);
// static_cast<BYTE*>
for(int j=0;j<pBitmap->Width*3;j++)
{
int iColor;
iColor=ptr1[j]*iDiv/100+ptr2[j+x1*3]*(100-iDiv)/100;
if(iColor<1)iColor=1;
if(iColor>255)iColor=255;
ptr1[j]=iColor;
}
}
}
catch(Exception&eError)
{
//error
OutError("透明计算出错 "+eError.ClassName()+ " : " +eError.Message);
}
}
xizhouhawk
2003-09-17
打赏
举报
回复
这句是获取第i行第一个像素地址的意思
zhuxiaozhong
2003-09-15
打赏
举报
回复
看一看:
Byte *ptr1;
pBitmap->PixelFormat=pf24bit;
for(int i=0;i<pBitmap->Height;i++)
{
ptr1=(Byte *)pBitmap->ScanLine[i];
for(int x=0;x<pBitmap->Width;x+=3)
{
r=ptr1[3*x];
g=ptr1[3*x+1]
b=ptr1[3*x+2];
}
}
能解决问题哦!
weibz0525
2003-09-08
打赏
举报
回复
把代码贴全了
eangel9
2003-09-06
打赏
举报
回复
你的pBitmap加载的是24 位真彩图象,上面的应该没有错误。你后面的程序是怎么写的。
如果对像素做处理的话,要注意三个字节表示一个像素。我觉得错误是出在你后边的程序中。
for(int i=0;i<pBitmap->Height;i++)
{
ptr1=(Byte *)pBitmap->ScanLine[i];
for(int x=0;x<pBitmap->Width;x++)
{
r=ptr1[3*x];
g=ptr1[3*x+1]
b=ptr1[3*x+2];
}
}
zjqyb
2003-09-06
打赏
举报
回复
这一段没有问题,可能其他地方有问题
chenpeng20000
2003-09-06
打赏
举报
回复
这一句没有问题呀,非常正确
图像加噪(BCB)
<br />//产生随机噪声图像<br />void __fastcall TForm1::N5Click(TObject *Sender)<br />{<br /> int noisepoint;<br /> Graphics::T
Bitmap
*...<br /> p
Bitmap
->Assign(Image1->Picture->Graphic);<br /> unsigne
第二章 图像的显示
声明:这一章开始的代码都是本人实际演示过的,按照本人的操作可以运行。程序并没有很强的健壮性,只能对正确的操作做出符合预期的响应。 整本书的代码文件、测试图片和程序运行exe请在这里下载:http...
图片在jpg 格式与bmp24格式之间的转换
JpegToBMP24(
BYTE
*pJpgIn, int nJPGDataSize, LP
BYTE
& pRGB24Out, int& nWidth, int& nHight, int& n
Line
Byte
s ) JpegFromBMP24(
BYTE
*pRGB24In, int nWidth, int nHeight, int n
Line
Byte
s, LP
BYTE
&pJpgOut);
How can I save HICON to an .ico file
refer:http://stackoverflow.com/questions/2289894/how-can-i-save-hicon-to-an-ico-file answer1: 1 #include "stdafx.h" 2 #include <windows.h> 3 #include <olectl.h> 4 #pragma commen...
OpenGL系统设计-纹理贴图(4)
1.1 JPEG纹理 大型的应用程序特别是游戏程序使用的贴图非常多,如Quake III使用的JPEG和TGA文件就有将近2000个,其中JPEG文件超过一半,占用近30MB。如果都使用BMP格式的话,因为没有压缩,占用的空间将大大增加,...
C++ Builder
13,825
社区成员
102,679
社区内容
发帖
与我相关
我的任务
C++ Builder
C++ Builder相关内容讨论区
复制链接
扫一扫
分享
社区描述
C++ Builder相关内容讨论区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章