‘IronPython’ カテゴリーの投稿
IronPythonで印刷
IronPythonで印刷処理をします。
とりあえず印刷プレビューを表示してみましょう。
簡単なコードを書いてipyで実行
# -*- encoding: utf-8 -*-
import clr
clr.AddReferenceByPartialName(“System.Drawing”)
clr.AddReferenceByPartialName(“System.Windows.Forms”)
clr.AddReferenceByPartialName(“System.Drawing”)
clr.AddReferenceByPartialName(“System.Windows.Forms”)
from System.Drawing import *
from System.Drawing.Printing import *
from System.Windows.Forms import PrintPreviewDialog
from System.Drawing.Printing import *
from System.Windows.Forms import PrintPreviewDialog
f = Font(“MS UI Gothic”, 12.0, FontStyle.Regular)
def doc_PrintPage(sender, e):
e.Graphics.DrawString(“Test”, f, SolidBrush(Color.Black), PointF(0, 0))
e.Graphics.DrawString(“Test”, f, SolidBrush(Color.Black), PointF(0, 0))
doc = PrintDocument()
doc.PrintPage += doc_PrintPage
dlg = PrintPreviewDialog()
dlg.Document = doc
dlg.ShowDialog()
doc.PrintPage += doc_PrintPage
dlg = PrintPreviewDialog()
dlg.Document = doc
dlg.ShowDialog()
実行するとおなじみの.NET Frameworkの印刷プレビューが表示されます。
印刷ダイアログを表示して印刷の場合はPrintPreviewをPrintDialogに変更して
ShowDialogメソッドを呼べばできますね。
こんなに簡単にできるなんて!
C#をやってる人間には驚きです。
Ipythonを使う理由が分かってきました。
C#とIron Python2.0
C#とIron Pythonを連携しようとしてハマったのでメモ。
Web上でみかけたサンプルを見かけたので実行しようとしたら
Iron Python2.0ではPythonEngineクラスがありませんでした。
なんとなくIronPython.dllの中身をオブジェクトブラウザで探すと
Python.CreateEngine()
を発見。
PythonEngineじゃなくてScriptEngineだけど
IronPythonフォルダにMicrosoft.Scripting.dllがあったので参照
using Microsoft.Scripting.Hosting;
で使おう。
試行錯誤でなんとか動いた
C#のコードは
using IronPython.Hosting;
using Microsoft.Scripting.Hosting;
using Microsoft.Scripting.Hosting;
でインポートして
ScriptEngine engine = Python.CreateEngine();
ScriptSource source = engine.CreateScriptSourceFromFile(“test.py”,
ScriptSource source = engine.CreateScriptSourceFromFile(“test.py”,
System.Text.Encoding.UTF8,
Microsoft.Scripting.SourceCodeKind.Expression);
int result = source.Execute<int>();
int result = source.Execute<int>();
Pythonのソース(test.py)は
# coding: utf-8
2 + 2
2 + 2
で実行。
4が戻ってきた!
やったね。
たったこれだけなのに時間がかかってしまった。