使用 FLTK 和 C++:制作一个在定义的框架内适合图像的函数

Posted

技术标签:

【中文标题】使用 FLTK 和 C++:制作一个在定义的框架内适合图像的函数【英文标题】:Using FLTK & C++: Making a function that fits an image within a defined frame 【发布时间】:2014-11-09 23:09:50 【问题描述】:

我正在编写一个程序,用户可以在其中键入图像的名称,例如“image.jpg”。我正在尝试设计一个获取该图像的函数,并且不裁剪它,以使其适合 470 x 410 像素的矩形形状的方式调整它的大小。 有人会碰巧知道如何获取图像大小的数值和/或调整图像大小以使其适合该矩形吗?

【问题讨论】:

【参考方案1】:

在 FLTK 文档中有一个名为 pixmap_browser.cpp 的示例程序。在我的 Linux 系统上,我在 /usr/share/doc/fltk-1.3.2/examples

下找到了它

这是您要查找的代码的精髓:

#include <FL/Fl_Shared_Image.H>
// ...

// Load the image file:
Fl_Shared_Image *img = Fl_Shared_Image::get(filename);
// Or die:
if (!img) 
    return; 

// Resize the image if it's too big, by replacing it with a resized copy:
if (img->w() > box->w() || img->h() > box->h()) 
    Fl_Image *temp;
    if (img->w() > img->h()) 
        temp = img->copy(box->w(), box->h() * img->h() / img->w());
     else 
        temp = img->copy(box->w() * img->w() / img->h(), box->h());
    
    img->release();
    img = (Fl_Shared_Image *) temp;

调整大小的方法是Fl_Image::copy。基本上,如果源图像太大,代码会用调整大小的副本替换源图像。

【讨论】:

以上是关于使用 FLTK 和 C++:制作一个在定义的框架内适合图像的函数的主要内容,如果未能解决你的问题,请参考以下文章

如何在 C++ 和 FLTK 中实现倒计时时钟?

Makefile 结合了 fltk 和 C++ 文件

是否可以使用标准 C++ 线程而不是 FLTK 超时来更新窗口?

如何修复“Programmin 原则和实践使用 C++”一书中的 FLTK 头文件?

c++ FLTK 图像重绘

我如何拆分 fltk 代码和定义