问题标签 [drawingarea]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
574 浏览

grid - 附加到 Gtk.Grid 时 Gtk.DrawingArea 为空白

(这是我的第一篇文章,如果我做错了对不起......)

我正在 Vala 编写一个可以设计教室的程序。我决定使用 GTK 作为 GUI(Vala 与此很好地集成),并使用 Cairo 绘制教室图(GTK 默认带有此)。

我创建了一个“教室”类(Gtk.DrawingArea 的子类),目前应该只显示一个正方形:

我还为我的应用程序创建了一个类:

这是我的主要功能:

我将我的classroom小部件放入Gtk.Grid我选择的布局小部件中。当我编译我的代码并运行它时,我得到一个空白窗口:

我的空白窗口

但是,如果我不使用Gtk.Grid,而只是添加我的classroomusing root.add()(我已将其注释掉),则classroom小部件将正确显示:

当它工作时,不使用 Gtk.Grid

为什么我的小部件在使用 Gtk.Grid 添加时不显示?

我能做些什么来解决这个问题?

0 投票
2 回答
3439 浏览

c - In GTK+3, how do I get a drawingarea to respond to mouse events?

In GTK+3, how do I get a drawing_area to respond to mouse events?

In main() function I declared my drawing_area:

Then I connected the drawing_area with the mouse click signal:

the function "clicked" is defined by:

The program runs and shows the drawing_area but when I click on it, no answer, nothing happens! Why is this happening?

0 投票
1 回答
213 浏览

cairo - 如何移动开罗绘图/表面

我正在尝试编写一个模仿维基百科正弦图中动画的 gtk + Cairo 应用程序。

https://en.wikipedia.org/wiki/File:Circle_cos_sin.gif

我想画一个点,然后将曲面向左移动,然后画一个新点,然后再次移动。我已经用像素图做到了这一点,但我无法用开罗解决这个问题。

抵消是要走的路吗?

cairo_surface_set_device_offset (surface, offset_x, offset_y);

0 投票
2 回答
256 浏览

c - 在 GTK3 中,如何让 DrawingArea 响应键盘事件?

在 GTK3 中,如何让 DrawingArea 响应键盘事件?我应该将绘图区域与信号连接还是更复杂?我正在使用带有 C 语言的 GTK3。

0 投票
1 回答
142 浏览

python-3.x - PyGtk3 - Gtk.DrawingArea 不会滚动

我的问题在于我已经将 GtkImage 替换为 GtkDrawingArea 小部件,并且它不像 GtkImage 那样滚动。

这就是我放置 GtkImage 和 GtkDrawingArea 的方式(一次一个)。

  • GtkScrolledWindow
    • GtkViewPort
      • GtkImage / GtkDrawingArea

我以为这已经足够了。

使用 GtkImage:我水平和垂直滚动,GtkImageViewport 加载应该显示的 PixBuf 部分,如您在此处看到的:

在此处输入图像描述

使用 GtkDrawingArea:滚动条占据所有可用区域,因此图像不会移动,如您在此处看到的:

在此处输入图像描述

如果我调整窗口大小,图像中不可见但在滚动时应该可见的部分会出现:

在此处输入图像描述

NOTE1:我希望能够在图像上绘图并使用像素坐标,这就是为什么我认为使用 Gtk.DrawingArea 和 Cairo 是一个好主意。

NOTE2:我已经通过 Glade 和使用 scrolledwindow.add_with_viewport(drawing_area) 的代码进行了尝试

0 投票
1 回答
665 浏览

python-3.x - 在 PyGtk3 中调整 Gtk.DrawingArea 的大小

请运行下面的代码以获得如下内容:

在此处输入图像描述

基本上,我已经设置了一个 Gtk.DrawingArea,它位于 Gtk.Viewport 中,它也在 Gtk.Scrolledwindow 中。在所述 DrawingArea 中,我绘制了一个图像,使用 2 个按钮可以缩放所述图像。

运行应用程序。我还设置了一些回调,因此当您将鼠标指针悬停在图像上时,您会知道:

i) 当您进入绘图区时

ii) 当您离开绘图区时

iii) DrawingArea 处的 (x, y) 和图像像素强度

我面临的问题是,当您缩小足够的时间时,图像将如下所示:

在此处输入图像描述

但是,“鼠标进入”和“鼠标离开”信号以及“鼠标运动”信号的发送就像 DrawingArea 仍然具有创建时的大小一样。请将鼠标悬停在图像上方和图像外部但在绘图区域内以查看终端中的输出。

我希望在图像外悬停时不要发送信号。也就是说,如果可能,将 DrawingArea 大小调整为显示的图像大小。

0 投票
1 回答
187 浏览

python-3.x - PyGtk3 缩放 GdkPixbuf 使 Gtk.DrawingArea 绘制速度变慢

我有以下层次结构:

  • 滚动窗口

    • 视口

      • 绘图区

我已经实现了一个缩放工具,它基本上可以缩放我在 DrawingArea 中绘制的 GdkPixbuf。最初,图像是 1280x1040。移动滚动条时,Draw 回调函数需要大约 0.005 秒来绘制 GdkPixbuf - 它看起来非常流畅。

但是,当应用 300% 的缩放级别时,最多需要 0.03 秒,使其看起来不太平滑。可见的 DrawingArea 部分始终保持不变。看起来绘图操作是否考虑了不可见的区域。

我已经设置了以下代码,以便你们可以运行它。缩放比例已经是 300%。

那么,这是正常的不可避免的事情吗?

编辑

这是实现的解决方案的完整代码。

0 投票
1 回答
159 浏览

gtk - 滚动绘图区

信息:我使用 Ada 作为编程语言,Windowing 软件是 Gtk 和 GtkAda。

我的绘图区域有时不适合我的窗口,即使我使用全屏也不适合。因此我需要有一个滚动区域。我使用随附的代码来获得这样的窗口,但滚动条始终无法移动,因此无法看到我的绘图的一部分。我必须在我的程序中添加什么,在运行的程序中必须更改滚动条的范围时我必须做什么?

0 投票
0 回答
315 浏览

python - 使用 Cairo 在 GTK DrawinArea 上用鼠标绘制

我想在鼠标位置画一些点(点击鼠标)

我在开罗使用 Python

我已经编写了一些代码,但效果不佳(单击按钮时我看到了要点)。

我使用 Glade 制作了 GUI,这也在问题的末尾链接。

林间空地文件

0 投票
0 回答
91 浏览

c - 在填充其容器的绘图区域上方添加小部件

你好,

我想知道 GTK3/Glade 是否可以在背景中安装一个绘图区域并将小部件放在它上面(例如 GtkPalette)。当没有更多空间时,我还想集成缩放以放大绘图区域,或者反过来通过缩放缩小绘图区域。我只做了两天的研究,但不是很确定。我还在 Glade 上做了几次测试。

我首先尝试将我的绘图区域和小部件放在 GtkFixed 中。但是绘图区域不会自动填充 GtkFixed。此外,我没有证据表明它不适合小部件。事实上,我的印象是它不是为此而设计的。此外,通过代码我还不能用绘图区域填充 GtkFixed。

我尝试的另一种方法是使用 GtkBox 并将我的绘图区域直接放入其中。但是,这完全阻止了我将小部件放入其中。我来这里是为了问你这个问题,因为我还是一个初学者,我想避免在可能很难做的事情上浪费更多的时间。

关于变焦,我没有什么希望,但目前它不是必需的。我附上了我正在尝试制作的应用程序类型和我当前的应用程序,以便您可以更好地可视化与绘图区域相关的我想做的事情。
预先感谢您的回答。

这是我正在寻找的一个很好的例子(最后):https
://circuitverse.org/simulator 这是我的应用程序的屏幕截图:https ://ibb.co/rwQkGGM