MonoDevelopをつかって画像描画してみました。参考サイトのソースをシンプルにしただけなのですが
最初はライブラリのつなぎとかでいつものようにはまりました。
<開発環境>
ubuntu16.04
monodevelop5.10
gtkを少々
<実行環境作成>
monodevelopをUbuntu Softwareからインストールして起動
gtk# 2.0プロジェクトを新規で作成
MyDrawingArea.csを追加
ソースを入れる
ソリューションの中にある参照を編集してusingで利用しているパッケージを追加
ここではSystem.Drawingとgtk-dotnetを追加
namespaceを揃える
プログラムの実行は左上隅の三角マークです。
プログラムの中身は参考サイトをちょっと簡単にしています。
<開発画面>
<実行画面>
<ソースリスト>
Program.cs
MainWindow.cs
MyDrawingArea.cs
<参考サイト>
Gtk#でSystem.Drawing.Graphicsクラスの描画処理を用いる
最初はライブラリのつなぎとかでいつものようにはまりました。
<開発環境>
ubuntu16.04
monodevelop5.10
gtkを少々
<実行環境作成>
monodevelopをUbuntu Softwareからインストールして起動
gtk# 2.0プロジェクトを新規で作成
MyDrawingArea.csを追加
ソースを入れる
ソリューションの中にある参照を編集してusingで利用しているパッケージを追加
ここではSystem.Drawingとgtk-dotnetを追加
namespaceを揃える
プログラムの実行は左上隅の三角マークです。
プログラムの中身は参考サイトをちょっと簡単にしています。
<開発画面>
<実行画面>
<ソースリスト>
Program.cs
using System; using Gtk; namespace mono2 { class MainClass { public static void Main (string[] args) { Application.Init (); MainWindow win = new MainWindow (); win.ShowAll (); Application.Run (); } } }
MainWindow.cs
using System; using Gtk; namespace mono2 { public partial class MainWindow: Gtk.Window { MyDrawingArea da; Gtk.VBox vbox; public MainWindow () : base (Gtk.WindowType.Toplevel) { this.da = new MyDrawingArea (); this.vbox = new Gtk.VBox (); this.vbox.PackStart (this.da); this.Add (this.vbox); Build (); } protected void OnDeleteEvent (object sender, DeleteEventArgs a) { Application.Quit (); a.RetVal = true; } } }
MyDrawingArea.cs
using System.Drawing; using System; using Gtk; namespace mono2 { public class MyDrawingArea : Gtk.DrawingArea { int width; int height; public MyDrawingArea () { this.SizeAllocated += delegate (object o, SizeAllocatedArgs args) { this.width = args.Allocation.Width; this.height = args.Allocation.Height; }; this.ExposeEvent += delegate (object o, ExposeEventArgs args) { using (System.Drawing.Graphics g = Gtk.DotNet.Graphics.FromDrawable (args.Event.Window)) { using (Pen p1 = new Pen (Color.Red, 10.0f)) using (Pen p2 = new Pen (Color.SkyBlue, 20.0f)) using (StringFormat sf = new StringFormat ()) using (Font font = new Font ("Serif", 20.0f)) { sf.Alignment = StringAlignment.Near; sf.LineAlignment = StringAlignment.Near; g.DrawArc (p1, 100, 50, 200, 150, 0, 350); g.DrawLine (p2, 30, this.height-30, this.width-30, this.height-30); g.DrawString ("こんにちは世界", font, Brushes.Green, new PointF (110,110), // 構造体 sf); } } args.RetVal = false; }; } } }
<参考サイト>
Gtk#でSystem.Drawing.Graphicsクラスの描画処理を用いる