gpt4 book ai didi

c++ - GDIplus 比例位图

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:21:03 30 4
gpt4 key购买 nike

你好,我正在尝试更改比例 GDIplus::Bitmap 并在内存中保存缩放的 BItmap,但我遇到了问题。我尝试了很多不同的样本,结果是 NULL。例如,我尝试使用 SetResolution 更改图像的分辨率,我也尝试从 image->graphic 转换位图并使用构造函数 GDIplus::Bitmap scale 之一,但我没有结果。例如我尝试下一个代码:

Bitmap *bitmap = new Bitmap((int32)width, (int32)height,PixelFormat32bppARGB);
bitmap=bmp.Clone(0,0,W,H,PixelFormat32bppPARGB);
mBitmap=(void *)bitmap->Clone(0.0f,0.0f,width,height,PixelFormat32bppPARGB);

最佳答案

计算新的宽度和高度(如果你有缩放因子)

float newWidth = horizontalScalingFactor * (float) originalBitmap->GetWidth();
float newHeight = verticalScalingFactor * (float) originalBitmap->GetHeight();

或者如果新维度已知则为比例因子

float horizontalScalingFactor = (float) newWidth / (float) originalBitmap->GetWidth();
float verticalScalingFactor = (float) newHeight / (float) originalBitmap->GetHeight();

为缩放图像创建一个具有足够空间的新空位图

Image* img = new Bitmap((int) newWidth, (int) newHeight);

创建一个新的 Graphics 来绘制创建的位图:

Graphics g(img);

对图形应用缩放变换并绘制图像

g.ScaleTransform(horizontalScalingFactor, verticalScalingFactor);
g.DrawImage(originalBitmap, 0, 0);

img 现在是另一个具有原始图像缩放版本的位图。

关于c++ - GDIplus 比例位图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4041657/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com