当我在不显示图像的情况下向图像添加文本注释时,字体系列总是为 单区. 如何解决这个问题?
编辑 经过一些更多的测试,问题出现在两个,与 showImage()
和没有。当打开保存的图像时,字体系列就会丢失。
我想在一个目录下打开所有的图像文件,并为每个文件添加注释,而不向用户显示文件。一切都很好,除了字体系列总是为 单区.
下图显示的是在没有调用 showImage()
在左边。右边的是完全相同的代码,但只调用了一个 showImage()
. 大家可以看到,字库是错的。代码如下图所示。
编辑。 如上所述,当我关闭右边的图像再打开时,右边的图像和左边的图像是一样的。
String path = "/temporary/path/for/saving/test-img.dm4";
// create dummy image and save it
image img := RealImage("The Image", 4, 512, 512);
img = itheta
img.saveImage(path);
// - - -
// open the image and process it
img := openImage(path);
// img.showImage(); // <- This makes the difference between left and right image
// *Edit*: Both images loose their font family if they are
// closed and opened again
ImageDisplay disp;
if(img.ImageCountImageDisplays() == 0){
disp = ImageCreateImageDisplay(img, -2);
}
else{
disp = img.ImageGetImageDisplay(0);
}
Component text = NewTextAnnotation(100, 300, "Some text", 20);
text.ComponentSetForegroundColor(0, 0, 140);
text.ComponentSetFontFaceName("sans-serif");
disp.ComponentAddChildAtEnd(text);
// save so the image can be opened if it is not shown anyway
img.saveImage(path);
所有的功劳都归于@BmyGuest。正如他在评论中建议的那样,应该 只使用已安装的字体. 像 "sans-serif "这样的字体不存在。要想知道安装了哪些字体,请使用(如@BmyGuest所说)右键点击注释时的菜单。
如果你想直接安装字体,你可以使用 这个答案(当然是来自@BmyGuest:) 它选择了所有可用的字体。