我想保存GTK窗口的外观,以及它包含的所有按钮和其他小部件到PNG或PDF文件.开罗支持在这样的表面上绘画.我可以以某种方式要求GTK小部件在开罗表面上绘制自己吗?我非常感谢代码示例,因为我是GTK和Cairo的新手.Python是我的首选语言.
使用Cairo构建项目进行图形处理.两种抗锯齿选项都没有产生足够好的结果.我正在使用ARGB32表面并写入png.
我尝试过使用所有的提示样式,但我看不到结果的变化.
白色和黑色文本的最佳选项将是选项4,但正如您所看到的,它仍然不如示例5中的imagemagick库生成的输出那么好.
任何意见或建议欢迎.
1.使用'ANTIALIAS_DEFAULT'

2.使用'ANTIALIAS_NONE'

3.使用'ANTIALIAS_GRAY'

4.使用'ANTIALIAS_SUBPIXEL'

5.使用Imagemagick,它是默认的抗锯齿

我在ubuntu 12.04上使用ggplot2.默认情况下,我的x11类型设置为Xlib.因此,当我在qplot中使用更平滑时,我得到一个错误,如:
"此设备不支持半透明:每页仅报告一次".
但是,如果我调用x11(type ="cairo"),一切正常.
如何将cairo作为x11的默认后端?
我正在尝试在OSX下安装pycairo(cairo图形库的 Python绑定).
我开始了
easy_install pycairo
Run Code Online (Sandbox Code Playgroud)
得到了:
Requested 'cairo >= 1.8.8' but version of cairo is 1.0.4
error: Setup script exited with Error: cairo >= 1.8.8 not found
Run Code Online (Sandbox Code Playgroud)
所以我去了cairo的网站并下载了最新的cairo软件包(1.8.8),以及最新的pixman软件包(两个源软件包 - 找不到osx二进制文件)
解压缩两者,每个都在自己的目录中.对于pixman,常规./configure ; make ; sudo make install工作只是找到cairo,./ configure似乎工作,但make失败了:
In file included from cairo-analysis-surface.c:37:
cairoint.h:71:20: error: pixman.h: No such file or directory
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
为什么我必须努力让软件库在"正常工作"的操作系统上工作?为什么darwin不像linux?
在我的Gtk-Gdk-Cairo-Pango应用程序的开头,我创建了窗口:
GtkWidget *window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
Run Code Online (Sandbox Code Playgroud)
首先,有GtkWindow,但gtk_create_window返回GtkWidget,不是GtkWindow,为什么?
然后,一些功能,如gdk_window_process_updates(..)要求GdkWindow*.
gtk_window_set_geometry_hints()另一方面要求GtkWindow*.
在文档中也GdkWindow* gdk_window_new()有返回GdkWindow.
当然有文件说:
GdkWindow是屏幕上的矩形区域.它是一个低级对象,用于在GTK +级别实现高级对象,如GtkWidget和GtkWindow.GtkWindow是一个顶层窗口,用户可能会认为它是一个带有标题栏的"窗口"等等; 一个GtkWindow可能包含许多GdkWindow.
但它仍然没有告诉我,何时以及为什么我应该创建Gtk或Gdk窗口?这里的模式是什么?
现在你问,我想解决什么特别的问题?当然,我尝试在gtk + gdk之上使用cairo + pango在鼠标移动后立即绘制文本.问题是虽然实际绘图似乎表现得很快,但我无法像鼠标移动那样完成它.在我motion_notify_event刚刚调用的gtk_widget_queue_draw(GtkWidget)时候,实际鼠标在屏幕上移动有明显的滞后,即使我绘制单个字符,它在移动阶段也没有与鼠标指针对齐,只在鼠标停止后捕获它.
我尝试的是通过调用加速更新gdk_window_process_updates(GDK_WINDOW(window), false);,编译器吃它,但我得到了运行时断言:Gdk-CRITICAL **: gdk_window_process_updates: assertion 'GDK_IS_WINDOW (window)' failed.我找不到有关此宏的任何信息以及如何/何时使用它.
#include <gtk/gtk.h>
#define TXT "1234567890"
int X = 0, Y = 0;
static void do_drawing(cairo_t *);
GtkWidget *window; …Run Code Online (Sandbox Code Playgroud) 如何安装cairocffi过pip?
cairocffi是一个基于CFFI降的替代产品Pycairo https://github.com/SimonSapin/cairocffi.
我正在尝试在Ubuntu 14.04上安装它:
alvas@ubi:~$ cat /etc/*-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=14.04
DISTRIB_CODENAME=trusty
DISTRIB_DESCRIPTION="Ubuntu 14.04.2 LTS"
NAME="Ubuntu"
VERSION="14.04.2 LTS, Trusty Tahr"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 14.04.2 LTS"
VERSION_ID="14.04"
HOME_URL="http://www.ubuntu.com/"
SUPPORT_URL="http://help.ubuntu.com/"
BUG_REPORT_URL="http://bugs.launchpad.net/ubuntu/"
Run Code Online (Sandbox Code Playgroud)
我尝试使用标准pip命令进行安装,但我得到了这个:
$ sudo pip install cairocffi
The directory '/home/alvas/.cache/pip/log' or its parent directory is not owned by the current user and the debug log has been disabled. Please check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's …Run Code Online (Sandbox Code Playgroud) 我们的系统管理员刚刚将我们的操作系统升级到SLES12SP1.我重新安装了Rv3.2.3并试图制作情节.我使用cairo_pdf并试图制作一个带有x标签的图,\u0298即太阳符号,但它不起作用:标签只是空白.例如:
cairo_pdf('Rplots.pdf')
plot(1, xlab='\u0298') # the x-label comes up blank
dev.off()
Run Code Online (Sandbox Code Playgroud)
这曾经起作用,但由于某种原因它不再存在.它适用于其他角色,例如
cairo_pdf('Rplots.pdf')
plot(1, xlab='\u2113') # the x-label comes up with the \ell symbol
dev.off()
Run Code Online (Sandbox Code Playgroud)
当我只是粘贴太阳能符号,即
plot(1, xlab='?')
Run Code Online (Sandbox Code Playgroud)
然后我收到了警告
Warning messages:
1: In title(...) :
conversion failure on '?' in 'mbcsToSbcs': dot substituted for <ca>
Run Code Online (Sandbox Code Playgroud)
该机器是德语,但我使用的是美国英语UTF-8语言环境:
> sessionInfo()
R version 3.2.3 (2015-12-10)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: SUSE Linux Enterprise Server 12 SP1
locale:
[1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C
[3] LC_TIME=en_US.UTF-8 LC_COLLATE=en_US.UTF-8
[5] LC_MONETARY=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8
[7] LC_PAPER=en_US.UTF-8 LC_NAME=C …Run Code Online (Sandbox Code Playgroud) 我正在尝试在Rstudio中使用'Cairo'包,使用该命令install.packages('Cairo')
并且它没有问题.我收到这条消息 -
The downloaded binary packages are in
/var/folders/xn/c1nj85gx62b89876s15sbv9h0000gn/T//RtmpK9JM0l/downloaded_packages
Run Code Online (Sandbox Code Playgroud)
包出现在包列表中,但是当我尝试使用包含library(Cairo)或使用library('Cairo')
此错误信息时 -
Error : .onLoad failed in loadNamespace() for 'Cairo', details:
call: dyn.load(file, DLLpath = DLLpath, ...)
error: unable to load shared object '/Library/Frameworks/R.framework/Versions/3.3/Resources/library/Cairo/libs/Cairo.so':
dlopen(/Library/Frameworks/R.framework/Versions/3.3/Resources/library/Cairo/libs/Cairo.so, 6): Library not loaded: /opt/X11/lib/libXrender.1.dylib
Referenced from: /Library/Frameworks/R.framework/Versions/3.3/Resources/library/Cairo/libs/Cairo.so
Reason: image not found
Error: package or namespace load failed for ‘Cairo’
Run Code Online (Sandbox Code Playgroud)
sessionInfo()
R version 3.3.1 (2016-06-21)
Platform: x86_64-apple-darwin13.4.0 (64-bit)
Running under: OS X 10.11.6 (El Capitan)
locale:
[1] he_IL.UTF-8/he_IL.UTF-8/he_IL.UTF-8/C/he_IL.UTF-8/he_IL.UTF-8
attached base …Run Code Online (Sandbox Code Playgroud) 我的意思是,开罗是否使用opengl acelerated原语绘制线条,形状和所有内容?如果没有,一个图书馆这样做?
cairo ×10
r ×4
gtk ×2
macos ×2
python ×2
antialiasing ×1
gdk ×1
ggplot2 ×1
imagemagick ×1
install ×1
installation ×1
makefile ×1
opengl ×1
pango ×1
pangocairo ×1
php ×1
pip ×1
pygtk ×1
python-cffi ×1
unicode ×1