我必须用cairo渲染一个非常大的图像(>50.000²像素).为了做到这一点而不耗尽内存我一个接一个地渲染图像的部分(<1.000²像素),然后将它们合并在一起.
因为cairos剪切算法比我自己更快,所以第三步绘制整个图像,即使只有一部分是可见的.大多数CPU在步骤3中使用(通过python).大部分内存用于步骤4(通过cairo).
有没有办法加快速度?像这样的东西?
要么
我正在尝试使用javascript绑定将一个简单的开罗绘图绘制到一个混乱的窗口.我的问题是,除了命名略有不同的函数的一半,无论我尝试什么,都没有显示开罗绘图.我使用了python的一个例子,它可以工作,并将它移植到javascript.我也在使用内省来获取Clutter模块实例.我也在使用gjs版本0.7.14.谁能告诉我出了什么问题.
下面是我正在使用的示例代码.
const cairo = imports.cairo;
const clutter = imports.gi.Clutter;
function on_button_press_event (stage, event) {
clutter.main_quit();
}
function draw(cairo_tex) {
var context = cairo_tex.create();
context.scale(200, 200);
context.setLineWidth(0.1);
var colour2 = new clutter.Color();
colour2.from_string('#dd000088');
clutter.cairo_set_source_color(context, colour2);
context.translate(0.5, 0.5);
context.arc(0, 0, 0.4, 0, Math.PI * 2);
context.stroke();
}
function main () {
clutter.init(0, null);
var stage = new clutter.Stage();
var colour = new clutter.Color();
colour.from_string("#ffccccff");
stage.set_color(colour);
stage.set_size(400, 300);
stage.connect('button-press-event', on_button_press_event);
stage.connect('destroy', clutter.main_quit);
var cairo_tex = new clutter.CairoTexture.new(200, 200);
cairo_tex.set_position((stage.get_width() - 200) / …Run Code Online (Sandbox Code Playgroud) 它是否需要完全成熟的unicode字符呈现的依赖关系,还是可以读取和呈现任何平台(Linux/Max/Windows)本机字体字形而没有太多问题?
它可以在生成的pdf文件中导入/渲染eps/pdf/svg,还是我必须手动解析图像文件,并在Cairo中重绘它?
我正在尝试从PIL图像创建一个cairo ImageSurface,到目前为止我的代码是:
im = Image.open(filename)
imstr = im.tostring()
a = array.array('B', imstr)
height, width = im.size
stride = cairo.ImageSurface.format_stride_for_width(cairo.FORMAT_RGB24, width)
return cairo.ImageSurface.create_for_data(a, cairo.FORMAT_ARGB24, width, height, stride)
Run Code Online (Sandbox Code Playgroud)
但是这给了我
TypeError: buffer is not long enough.
Run Code Online (Sandbox Code Playgroud)
我真的不明白为什么会这样,也许我对图像格式不太了解.
我正在使用cairo 1.10.
我正在尝试使用32位Python 2.7(来自python.org)和来自MacPorts的cairo 1.10.2在我的OS X 10.5上安装PyCairo(来自tarball源码).所以我正在安装"py2cairo".当我跑步时python ./waf configure,我明白了
Checking for 'cairo' >= 1.10.0 : not found
Run Code Online (Sandbox Code Playgroud)
我这里有cairo文件......
$ ls /opt/local/include/cairo
cairo-deprecated.h cairo-gobject.h cairo-script-interpreter.h cairo-tee.h cairo-xlib-xrender.h cairo.h
cairo-features.h cairo-pdf.h cairo-script.h cairo-version.h cairo-xlib.h
cairo-ft.h cairo-ps.h cairo-svg.h cairo-xcb.h cairo-xml.h
$ ls /opt/local/lib/cairo
cairo-fdr.0.so* cairo-fdr.la* cairo-sphinx.0.so* cairo-sphinx.la* libcairo-trace.0.dylib* libcairo-trace.dylib@
cairo-fdr.a cairo-fdr.so@ cairo-sphinx.a cairo-sphinx.so@ libcairo-trace.a libcairo-trace.la*
Run Code Online (Sandbox Code Playgroud)
但是我将哪个目录传递给哪个参数?这些在指定cairo库时看起来不相关:
$ python ./waf --help
./options()
waf [commands] [options]
Main commands (example: ./waf build -j4)
build : executes the build
clean : cleans the project
configure: configures the …Run Code Online (Sandbox Code Playgroud) 我有几行文本,我希望每个文本都适合宽度(缩放字体大小)到Context的宽度.有办法做到这一点吗?我正在使用pangocairo和python.
我想用Cairo库加载一个SVG文件,对它应用一些转换.然后我想用glTexture显示我的svg.
但我只是找到创建svg文件但不加载svg的函数.
我的knitr文档中的特殊字符有问题.普通文本工作正常,但图片上标题或轴名称中的抛光字母没有.

我尝试通过安装cairoDevice包来解决这个问题.但它仍然无效.实际上我不确定这个包是否正常工作,因为我还必须安装Rgtk2包,并且它也存在问题.除了cairoDevice之外还有其他任何方式来获取信件吗?如果不是如何让它正常工作?
这是我的knitr文件problem.Rnw:
\documentclass[12 pt, a4paper]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{polski}
\usepackage{geometry}
\geometry{total={210mm, 297mm}, left=17mm, right=17mm, top=17mm, bottom=17mm}
\usepackage[font=footnotesize,labelfont=bf]{caption}
\usepackage{url}
\usepackage[colorlinks=true]{hyperref}
\hypersetup{linkcolor=blue}
<<include=F>>=
source("My path/plot.R")
@
<<include=F>>=
library(knitr)
library(RGtk2)
library(Cairo)
library(cairoDevice)
#ustawienia globalne
opts_chunk$set(fig.path='figure/', fig.align='center', fig.show='asis', fig.pos='ht!', dev='CairoPDF')
@
\begin{document}
<<MusicBad, echo=F, fig.width=5, fig.height=5, out.width='.5\\linewidth', fig.cap='B??dne zastosowanie wykresu liniowego.'>>=
plot.music.bad
@
\end{document}
Run Code Online (Sandbox Code Playgroud)
在这里我的plot.R档案:
library(ggplot2)
#create data frame
music <- c("Blues", "Hip-hop", "Jazz", "Metal", "Rock")
number <- c(8, 7, 4, 6, 11)
df.music <- data.frame(music, number)
#create line graph …Run Code Online (Sandbox Code Playgroud) 我正在尝试改变GTK#中的主题(操作系统:Windows,IDE:Xamarin).但我接下来的问题:
我只能找到一个正确呈现的主题,它是"Orta".一切都很好,除了滞后和冻结.这是我的代码:
string Resource_File = "Orta\\gtk-2.0\\gtkrc";
Application.Init ();
Gtk.Rc.AddDefaultFile (Resource_File);
Gtk.Rc.Parse (Resource_File);
MainWindow win = new MainWindow ();
win.Show ();
Application.Run ();
当我改变Paned或点击按钮的大小时,我得到了GUI冻结(我已经问过这个问题).只有在使用此主题时才会出现此问题,其他主题都可以正常工作.我使用搜索并发现了一些意见,关于这是由于使用Cairo渲染图形(其中之一).
如果我尝试使用不同的主题,很多GUI元素在我的GTK#应用程序中没有正确呈现,但它们在GTK主题选择器中正确呈现.如果主题在GTK主题选择器中正确显示,那么我尝试在我的Gtk#app中使用所选的gtkrc文件(如"Orta"中的示例所示),但几乎总是,大多数小部件都没有正确显示(这里是一个例子)
所以我有几个问题:
所以我需要你的帮助!谢谢!