Qt QImage drawImage
时间: 2024-11-19 22:15:05 浏览: 26
`QImage` 的 `drawImage()` 函数在 Qt 中用于从一个图像源绘制到另一个图像上。当你想要在一个 `QImage` 对象中显示其他图像时,可以使用这个方法。以下是它的基本用法:
1. **初始化透明 QImage**:
```cpp
QImage image(400, 300, QImage::Format_ARGB32);
```
这里指定 `Format_ARGB32` 表示图像有 Alpha 通道,允许透明度。
2. **创建 QPainter** 并开始绘画:
```cpp
QPainter p;
p.begin(&image);
```
3. **绘制外部图像**:
```cpp
p.drawImage(0, 0, QImage("../Image/noya.jpg"));
```
这行代码会把位于 `noya.jpg` 文件路径的图像绘制到 `image` 的左上角 (0, 0) 处。
4. **像素级别的操作**:
如果你想在已有的 `image` 上进行像素级修改,如设置特定位置的像素颜色,可以使用 `setPixel()` 方法,如示例中所示:
```cpp
image.setPixel(QPoint(i, j), qRgb(0, 255, 0));
```
5. **结束绘画并保存结果**:
```cpp
p.end();
image.save("../image.jpg");
```
一旦绘画完成,你可以通过 `end()` 结束 `QPainter`,然后保存修改后的 `image` 到文件。
请注意,为了实现透明效果,需要确保在绘制之前设置了正确的 `CompositionMode`,如例子中提到的 `QPainter::CompositionMode_DestinationIn`,它会将新绘制的内容与原图像混合,而不是覆盖原有内容。如果你忽略了这一点,可能会影响到图像的透明性。
阅读全文