使用 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 超时来更新窗口?