戻る>>
サンプルプログラム
折れ線グラフのサンプルプログラム。
(sample002)
|
計算結果をグラフで表示するサンプルプログラムです。 setDataRowDataで内部計算結果を直接指定しています。
|
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Threading;
using Visio = Microsoft.Office.Interop.Visio;
using Sakura.GW.Lib;
using Sakura.GW.AbstractLayer;
using Sakura.GW.AbstractLayer.Visio;
using Sakura.GW.Visio.Draw;
namespace VisioAddinGW_App
{
public partial class Form1 : Form
{
bool bExec = false;
public Visio.Application visioApp = null;
//GraphWeaver管理マネージャ
GraphWeaverMng visioManager = null;
//Visio用描画モジュール
VisioAddInLib_draw visioDrawModule = null;
//GraphWeaver設定情報
GraphWeaverData mngInfo = new GraphWeaverData();
long docIndex;
public Form1()
{
visioApp = (Visio.Application)new Microsoft.Office.Interop.Visio.InvisibleAppClass();
InitializeComponent();
}
///
/// Visio終了時コールバック関数
///
/// アプリケーションハンドル
private void visioApp_BeforeQuit(Microsoft.Office.Interop.Visio.Application app)
{
//Visioが終了された
visioApp = null;
}
///
/// コールバック関数
///
/// 処理結果フラグ
public void CallbackFunc(ErrorID eErrorID)
{
string message = "";
if (eErrorID == ErrorID.NoError)
{
//エラーなし
// フォームを最小化
this.WindowState = FormWindowState.Minimized;
return;
}
else if (eErrorID == ErrorID.ProcAbort)
{
//処理中断
message = "Abort";
}
else
{
//エラー発生
message = "Error ";
message += "\n( error code = " + eErrorID.ToString() + " )";
}
//ダイアログ表示
MessageBox.Show(message, "GraphWeaver",
MessageBoxButtons.OK, (eErrorID == ErrorID.NoError) ? MessageBoxIcon.Information : MessageBoxIcon.Error);
}
///
/// Visio終了時コールバック関数
///
public void CallbackVisioClosedFunc()
{
//外部からVisioが終了させられたので、ハンドルをnullに設定
visioApp = null;
this.Close();
}
private void button1_Click(object sender, EventArgs e)
{
if (bExec) return;
//Visioウィンドウ表示
visioApp.Window.WindowState = (int)Visio.VisWindowStates.visWSRestored;
visioApp.Visible = true;
visioApp.Window.WindowState = (int)Visio.VisWindowStates.visWSActive;
//描画モジュールにVisioのApplicationハンドルを渡してインスタンス作成
visioDrawModule = new VisioAddInLib_draw(visioApp);
//管理マネージャに描画モジュールのハンドルを渡してインスタンス作成
visioManager = new GraphWeaverMng(visioDrawModule);
//処理終了時のコールバック登録
visioManager.ResponseFuncs += new GraphWeaverMng.callbackResponse(CallbackFunc);
//Visio終了時のコールバック登録
visioManager.VisioClosedFunc += new GraphWeaverMng.callbackVisioClosed(CallbackVisioClosedFunc);
//管理マネージャ起動
visioManager.start();
//データ指定
List list = new List();
for (double x = -5 ; x < 6 ; x += 0.1)
{
double y;
y = Math.Pow(x,2.0) - (4 * x) + 3 ;
Sakura.GW.Lib.Point pos = new Sakura.GW.Lib.Point(x, y);
list.Add(pos);
}
mngInfo.SetDataRowData(list);
string pageName = "";
//ページ作成
if (visioManager.createDocument("", out docIndex))
{
pageName = "2次関数のグラフ";
//初期ページを対象にする
if (!visioManager.takeoverPage(docIndex, pageName))
{
//失敗時、新規にページ作成
if (!visioManager.createPage(docIndex, ref pageName))
{
return;
}
}
}
//ページ設定
double he = 297;
double wi = 210;
mngInfo.SetPage(pageName, wi, he, 1.0, LengthUnit.mm);
//グラフ設定
double ghe = 237.0;
double gwi = 168.0;
mngInfo.SetGraphSize(GraphType.LineChart, gwi, ghe, 21.0, 30.0);
//タイトル設定
GraphWeaver_FontAttribute titleAttr = new GraphWeaver_FontAttribute();
titleAttr.fontSizePoint = 25.0;
titleAttr.fontColor.setIndex(ColorIndex.Green);
mngInfo.SetGraphTitle("2次関数のグラフ y=x2-4x+3", titleAttr);
//描画象限設定
mngInfo.SetGraphImageLimit(Quadrant.QuadrantAll);
//軸設定
GraphWeaver_AxisPack axisSet = new GraphWeaver_AxisPack();
axisSet.axisSpec = AxisSpec.AxisX; //軸種別
axisSet.bEnable = true; //軸表示フラグ
axisSet.min = 0; //最小値
axisSet.max = 10; //最大値
axisSet.title = "X"; //軸表示名称
axisSet.titleAttr.fontSizePoint = 20.0; //軸表示名称フォントサイズ
axisSet.titleAttr.fontColor.setIndex(ColorIndex.Black); //軸表示名称フォント色
axisSet.tickness = 0.7; //軸太さ
axisSet.axisColor.setIndex(ColorIndex.Black); //軸色
axisSet.additionalLine1.tics = 5; //第1補助線きざみ値
axisSet.additionalLine1.ticLength = 5; //第1補助線長さ
axisSet.additionalLine1.ticThickness = 0.4; //第1補助線太さ
axisSet.additionalLine1.ticColor.setIndex(ColorIndex.Black); //第1補助線色
axisSet.additionalLine1.ticFontAttr.fontSizePoint = 12.0; //第1補助線数値フォントサイズ(pt)
axisSet.additionalLine1.ticFontAttr.fontColor.setIndex(ColorIndex.Red); //第1補助線数値フォント色
axisSet.additionalLine2.mTics = 5; //第2補助線分割数
axisSet.additionalLine2.mTicLength = 2.5; //第2補助線長さ
axisSet.additionalLine2.mTicThickness = 0.2; //第2補助線太さ
axisSet.additionalLine2.mTicColor.setIndex(ColorIndex.Blue); //第2補助線色
//X軸設定
mngInfo.SetGraphAxisPack(axisSet);
axisSet.axisSpec = AxisSpec.AxisY; //軸種別
axisSet.title = "Y"; //軸表示名称
//Y軸設定
mngInfo.SetGraphAxisPack(axisSet);
//点設定
GraphWeaver_PointPack pointPack = new GraphWeaver_PointPack();
pointPack.style = PointStyle.Circle; //点のスタイル
pointPack.pointColor.setIndex(ColorIndex.Transparence); //点の色
pointPack.size = 2.0; //点のサイズ
pointPack.bConnect = true; //接続線の有無
pointPack.lineColor.setIndex(ColorIndex.Red); //接続線の色
pointPack.lineTickness = 0.5; //接続線の太さ
mngInfo.SetGraphPoint(0,pointPack); //点の設定
mngInfo.SetCommand(GraphWeaverData.CommandID.drawGraphAll);
if (!visioManager.DoCommand(docIndex, mngInfo))
{
MessageBox.Show("Not Execute!");
}
else
{
bExec = true;
}
}
private void button2_Click(object sender, EventArgs e)
{
bExec = false;
this.Close();
}
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
if (visioManager != null)
{
if (visioApp != null)
{
//ドキュメントを閉じる
visioManager.closeDocument(docIndex);
}
//管理マネージャ停止
visioManager.stop();
}
try
{
//Visioを閉じる
if (visioApp != null)
{
visioApp.Quit();
visioApp = null;
}
}
catch (Exception)
{
}
}
}
}
戻る>>