大神,请问这段代码是什么意思?

为什么一定要用bm来获取图片的宽高而不能直接用img=::newImage(L"素材.png");直接加载到img里面呢?然后下面说的去除alpha通道是什么意思?然后为... 为什么一定要用bm来获取图片的宽高而不能直接用img = ::new Image(L"素材.png");直接加载到img里面呢?
然后下面说的去除alpha通道是什么意思?然后为什么img是Image类却可以用Bitmap的构造函数来构造呢?
还有第一行Bitmap bm = new Bitmap(L"素材.png");为什么Bitmap对象可以载入PNG格式的图片啊?那我是否可以直接用Bitblt来显示PNG格式的图片啊?
另外,为什么要在构造函数里面DrawImage呢?执行构造函数的时候窗口不是还没出来吗?那么
展开
 我来答
空雪梦见
2013-12-15 · TA获得超过5596个赞
知道大有可为答主
回答量:2522
采纳率:75%
帮助的人:1154万
展开全部
1、其实我本来是打算直接修改它图像内部数据的……要这样做的话必须用Bitmap,这样才能LockBits然后操作。不过后来发现简单判断Alpha通道的方法好帆姿饥像不太行,所以后来就没有用了,但是没有改回Image来
2、alpha通道就是透明色,GDI+是支持的。如果要我说为什么这样做的话,……我可以说我只是懒得用 新建缓冲区——缓冲区刷白——往缓冲区画背景态返——画册仔框——输出这样的路线吗?本来想直接用bkimg->Clone来代替前三个步骤,但是发现尼玛的这图居然有透明色,这样做的话会导致原来的图像不能被完全覆盖(因为有alpha通道),所以就想出了把alpha通道去掉的想法。。。。。。
3、这是C++的基础知识,基类指针可以指向子类对象
4、Bitmap只是说载入以后它会是位图的形式,没说它是用来载入bmp的啊……
5、BitBlt能不能显示PNG图片我不确定,我记得我以前试验的时候,GDI貌似是不支持Alpha通道的……不支持的话也不是说就不能显示png,只要你能载入(嗯,只要能载入……)png,BitBlt就能给你刷上去,用不带透明度支持的方式刷上去
6、你注意看我到底是Draw到窗口上去了还是Draw到缓冲区里去了……
追问

怎么看出是Draw到窗口还是缓冲区呢?如果是你是写Graphics g(pDC)那我就能明白你是直接Draw到窗口,可是你是Graphics g(img),那我就不明白了。而且- -大神- -我想要个新建缓冲区——缓冲区刷白——往缓冲区画背景——画框——输出这样的路线的程序可以吗- -因为我就是需要用到透明色才花那么大功夫用PNG格式的- -

追答

好吧…………

来自:求助得到的回答
AiPPT
2024-09-19 广告
随着AI技术的飞速发展,如今市面上涌现了许多实用易操作的AI生成工具1、简介:AiPPT: 这款AI工具智能理解用户输入的主题,提供“AI智能生成”和“导入本地大纲”的选项,生成的PPT内容丰富多样,可自由编辑和添加元素,图表类型包括柱状图... 点击进入详情页
本回答由AiPPT提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式