当给定PixBuf时,如何在对象创建后更改Gtk::Image
How to change Gtk::Image after object creation when PixBuf is given
我试图通过给它pixbuf来改变Gtk::Image
派生对象,但我不知道如何接近它。
简单的设置可以模拟为:
#include <gtkmm.h>
#include <iostream>
class MyImage : public Gtk::Image
{
public:
void setPixBuf(Glib::RefPtr<Gdk::Pixbuf> pixbuf);
};
void MyImage::setPixBuf(Glib::RefPtr<Gdk::Pixbuf> pixbuf)
{
// How can i override the existing pixbuf here?
}
void freeImagePixelData(const guint8* data)
{
delete[] data;
}
Glib::RefPtr<Gdk::Pixbuf> generateTestImage()
{
guint8 *data = new guint8[40*40*4];
for(int i=0; i<40*40*4; )
{
data[i++] = (guint8)255; // R
data[i++] = (guint8)255; // G
data[i++] = (guint8)0; // B
data[i++] = (guint8)255; // A
}
Glib::RefPtr<Gdk::Pixbuf> pixbuf = Gdk::Pixbuf::create_from_data(
data, Gdk::Colorspace::COLORSPACE_RGB, true, 8, 40, 40, 40*4, sigc::ptr_fun(&freeImagePixelData));
return pixbuf;
}
int main(int argc, char** argv)
{
Glib::RefPtr<Gtk::Application> app = Gtk::Application::create(argc, argv, "com.almost-university.gtkmm.image.pixbuf");
Gtk::Window window;
MyImage im1;
im1.setPixBuf(generateTestImage());
window.add(im1);
window.show_all_children();
app->run(window);
return 0;
}
(请注意,这是我试图弄清楚的一个过度简化的版本,我知道我应该使用Gtk::manage,而不是在没有另一个容器的情况下直接向窗口添加东西,这只是一个模型)
我知道如果我要使用构造函数生成图像,如下所示:
Gtk::Image im2(generateTestImage());
window.add(im2);
那么我实际上会得到一个黄色的正方形。
不知何故,我拒绝相信一个人只能在对象创建时使用pixbuf。必须有一种方法来设置图像数据的某种方式,我只是找不到所需的功能。
要在Gtk::Image
中设置Pixbuf,可以使用Gtk::Image::set(const Glib::RefPtr< Gdk::Pixbuf >& pixbuf)
方法:
void MyImage::setPixBuf(Glib::RefPtr<Gdk::Pixbuf> pixbuf)
{
set(pixbuf);
}
相关文章:
- 如何创建一个CMake变量,除非显式重写,否则使用默认值
- 使用std::multimap迭代器创建std::list
- 在全局变量中保存类的实例以重新创建类(创建"backup")
- 使用CMake创建QML插件
- 如何在c++中为模板函数实例创建快捷方式
- 在C++中,是否可以基于给定的标识符创建基类的新实例,反之亦然
- 创建一个函数以在输入为负数或零时输出字符串.第一次执行用户定义的函数
- 如何在运行中期切换GTK CSS style_context
- OpenCV EqualizeHist()从彩色图像创建黑白图像
- Gtkmm:创建一个Gtk::ComboBox,其中列出Gtk::DrawingArea
- 用GTK创建逻辑门模拟器,如何制作放置区域
- 创建关闭GTK+对话框的取消按钮的正确方法是什么
- 使用R创建图形/图/图表和GTK来显示和与它们进行交互
- GTK+ / Gtkmm,检查笔记本选项卡是否已存在,仅在不存在时才创建它
- GTK 应用程序: 如何使用 Qt/C++ 创建工作指标
- 在GTK+ 2.24中,创建带有淡出效果的临时对话框
- GTK+ 3, c++ -创建按钮与库存图像
- 创建一个Gtk按钮,背景中有一个图像,前面有一个标签
- 当给定PixBuf时,如何在对象创建后更改Gtk::Image
- 创建大量Gtk小部件比在方法中传递上下文更好吗?