我正在尝试编写绘图图形应用程序,但我需要用户输入(鼠标点击)和绘图区域/画布。我找到了这个2:http://zetcode.com/gui/rubyqt/introduction/和http://zetcode.com/gui/rubygtk/。我不关心它可以运行的平台。该项目将在Ruby上。感谢您提供任何帮助或建议!
答案 0 :(得分:2)
您也可以尝试使用Tk,它具有Ruby的绑定(除了其他几种语言,如tcl,python,perl)。有关示例的概述和教程,请参阅tkdocs.com。有关绘制图形的信息,请参阅canvas小部件。
以下是该网站的一个示例,其中显示了如何在画布上以交互方式绘制线条:
require 'tk'
root = TkRoot.new()
@canvas = TkCanvas.new(root)
@canvas.grid :sticky => 'nwes', :column => 0, :row => 0
TkGrid.columnconfigure( root, 0, :weight => 1 )
TkGrid.rowconfigure( root, 0, :weight => 1 )
@canvas.bind( "1", proc{|x,y| @lastx = x; @lasty = y}, "%x %y")
@canvas.bind( "B1-Motion", proc{|x, y| addLine(x,y)}, "%x %y")
def addLine (x,y)
TkcLine.new( @canvas, @lastx, @lasty, x, y )
@lastx = x; @lasty = y;
end
Tk.mainloop
答案 1 :(得分:2)
尝试QtRuby - Qt功能是最全面的,IMO。
以下是跟踪坐标的示例:
require 'Qt4'
class MyWindow < Qt::Widget
def initialize
super
move 300, 300
setFixedSize(500, 500)
@label = Qt::Label.new(self)
@layout = Qt::VBoxLayout.new
@graphics = Qt::GraphicsScene.new(-100, -100, 400, 200)
@gv = Qt::GraphicsView.new(@graphics, self)
@label.show
@gv.show
@layout.add_widget(@gv, 0, Qt::AlignCenter)
@layout.add_widget(@label, 0, Qt::AlignCenter)
setLayout(@layout)
show
end
def mousePressEvent(e)
@mousePos = e.pos
@label.setText("x: #{@mousePos.x}, y: #{@mousePos.y}")
end
end
Qt::Application.new(ARGV) do
MyWindow.new
exec
end
不是最好的风格,但它可以用于一般的理解。
如果你想手动绘制线条,Qt已经有了这样的设施。此外,Qt有一个漂亮的社区和文档:example