サポート&サービス

Home > サポート&サービス > テクニカルサポート > ナレッジベース

テクニカルサポート

製品に関する技術的なサービスを提供しています。製品別の技術情報(ナレッジベース)および、対応環境情報をご覧いただけます。また、E-mailによるテクニカルサポートのお申し込みもこちらで受け付けています。

サブスクリプションにてComponentOne製品(ComponentOne Studioシリーズ、Doc-To-Help、Wijmoシリーズ)をご購入された方は、下記専用サイトの「サポート&サービスメニュー」をご確認ください。
ComponentOneホーム

ナレッジベース

[TrueChart for Windows Forms] ChartAreaのLocationDefaultとSizeDefaultを設定すると、印刷/プレビュー時にグラフ領域が正しい位置とサイズで描画されない
文書番号 : 33279     文書種別 : Bug
登録日 : 2012/07/12     最終更新日 : 2014/06/02
文書を印刷する
対象製品
ComponentOne Studio 2011J
[ 最新版Component Studioのナレッジベースはこちら ]
ステータス
新バージョンで修正済み
詳細
ChartAreaのLocationDefaultとSizeDefaultを設定した場合、PrintDocumentクラスのPrintPageイベント内でC1ChartのDrawメソッドを呼び出すと、ChartAreaが本来の位置とサイズで描画されず、不正になります。


申し訳ございませんが、この不具合は本バージョンでは修正されません。
◎ComponentOne Studio 2012Jシリーズのサービスパックについて
http://www.grapecity.com/tools/support/salesend.htm#c1sp
回避方法
PrintPageイベントでグラフ領域を表すGraphicsオブジェクト取得し、その原点に対して平行移動することで、ChartAreaを正しい位置に配置してください。

◆サンプルコード
-----------------
private void Form1_Load(object sender, EventArgs e)
{
 c1Chart1.ChartArea.LocationDefault = defaultLocation;
 c1Chart1.ChartArea.SizeDefault = defaultSize;
}

private void button1_Click(object sender, EventArgs e)
{
  // PrintDocumentの生成
  PrintDocument pd = new PrintDocument();
  PrinterSettings ps = pd.PrinterSettings;
  PaperSize indexA4 = null;
  foreach (PaperSize temp in ps.PaperSizes)
  {
    if (temp.Kind == PaperKind.A4) indexA4 = temp;
  }
  pd.DefaultPageSettings.PaperSize = indexA4;
  pd.DefaultPageSettings.Landscape = true;
  pd.DefaultPageSettings.Margins.Top = 20;
  pd.DefaultPageSettings.Margins.Left = 20;
  pd.DefaultPageSettings.Margins.Bottom = 20;
  pd.DefaultPageSettings.Margins.Right = 20;
  pd.PrintPage += new PrintPageEventHandler(pd_PrintPage);
  // プレビュー画面の表示
  PrintPreviewDialog ppDialog = new PrintPreviewDialog();
  ppDialog.Document = pd;
  ppDialog.ShowDialog();
}
private void pd_PrintPage(object sender, PrintPageEventArgs e)
{
  // グラフの描画
  int x = e.MarginBounds.Left;
  int y = e.MarginBounds.Top;
  int width = e.MarginBounds.Width;
  int height = e.MarginBounds.Height / 3;
  Graphics g = e.Graphics;
  System.Drawing.Drawing2D.GraphicsState gs = g.Save();
  g.TranslateTransform(x, y);
  c1Chart1.Draw(g, new Rectangle(0, 0, width, Height));
  g.Restore(gs);
}

この情報は、疑問・問題解決のお役に立ちましたか?

    


こちらに入力されたご質問には回答できませんので、製品に関するお問い合わせは、別途「E-mailサポート」をご利用ください。


※ 個人情報保護のため、個人情報の記入はご遠慮ください。

このページの先頭へ