GraphWeaver for Visio サンプルプログラム
サンプルプログラムご利用にあたって
    以下の使用条件を遵守して下さい。
  • サンプルプログラムおよび資料のネットワークへの公衆送信、および、雑誌・製品への無許可の添付・複製を禁止します。
  • 当社は、サンプルプログラムおよび資料の使用に付随また関連して発生する損害に関して、一切の責任を負わないものとします。
  • サンプルプログラムおよび資料に、誤字・脱字・位置ずれ等の表記、又、内容に誤りがございましても当社として責任は負わないものとします。
  • サンプルプログラムおよび資料は、予告せずに改良・変更することがあります。
  • サンプルプログラムおよび資料は、動作例・応用例を説明するためのものです。したがってこれらの情報を使用される場合には、使用者の責任においてプログラムを設計してください。これらの使用に付随また関連して発生する損害に関して、当社は一切の責任を負わないものとします。
戻る>> サンプルプログラム
折れ線グラフのサンプルプログラム。 (sample002)
サンプルプログラムsample008
計算結果をグラフで表示するサンプルプログラムです。
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)
            {

            }
        }
    }
}
							
戻る>>
GraphWeaver for Visio に関するお問い合せは まで。

※Microsoft及びOffice,Visio,Excell,PowerPointは米国Microsoft Corporationの登録商標です。