掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
Canvasに描画する線の幅を太くした時、実線にならない方法は? (ID:6522)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
sadoyamaさん、ありがとうございます。 今、サンプルのソースを見ているのですが私のレベルでは、何がどうなっているのか分かりませんので、もしよろしければご教授願いたいのですが・・・ > PaintBoxは使ったことがないので、通用するかは解りませんが > TImage, TCanvas上での描画経験があります。 私がやっているのは、TPaintBoxのTCanvas上での描画です^^; 説明不足ですいませんでした。 現在、PolyLineを使ってPointで座標を指定し点と点と結ぶグラフを描画しているのですが^^;ソースは下記の様なものです。 //****************************************************************************** // CanvasPaint : グラフ描画 // 罫線を描画する // 引数 : ACanvas : ペイントボックス.キャンバス // ARect : ペイントボックス領域 // 戻り値 : なし // //****************************************************************************** procedure TFm31RmsMain.CanvasPaint(ARect: TRect;p_PrintDataAry: PRMSItem; p_Property: TGraphPaint); var iLoopCnt: Integer; iZoom: Integer; // グラフ描画関連 pDataAry : array[0..15] of TPoint; // 座標変換配列 pStart : TPoint; // 基準開始座標 pEnd : TPoint; // 基準終了座標 eGraphDmax : Extended; // 環境設定画面 グラフDMAX eMeasureX : Extended; // 1マスの幅 eMeasureY : Extended; // 1マスの高さ begin // 画像を表示するCanvasを設定 Case Pctl01.ActivePageIndex of 0 : ActiveCanvas := Ptbo01RmsVsDen; 1 : ActiveCanvas := Ptbo02RmsVsLog; 2 : ActiveCanvas := Ptbo03Wiener; 3 : ActiveCanvas := Ptbo04CTF01; 4 : ActiveCanvas := Ptbo05CTF02; end; // --------------------------------------------------------------------------- // 初期設定 // --------------------------------------------------------------------------- // グラフ縦軸の最大値 // eGraphDmax := m_objSensitManager.m_objIniFile.m_eRangeDMax; eGraphDmax := StrToFloat(EdtMax.Text); // 横軸の間隔を設定 eMeasureX := (ARect.Right - ARect.Left) / 16; // 「描画領域 / 16」 // 縦軸の間隔を設定 eMeasureY := (ARect.Bottom - ARect.Top) / eGraphDmax; // 基準座標設定 pStart.X := ARect.Left; // 基準開始 X座標 pStart.Y := ARect.Top; // 基準開始 Y座標 pEnd.X := ARect.Right; // 基準終了 X座標 pEnd.Y := ARect.Bottom; // 基準終了 Y座標 // --------------------------------------------------------------------------- // Zoom・シフト有無判定 // --------------------------------------------------------------------------- iZoom := 1; // 簡易増構造にはズーム機能はないので1に指定 // --------------------------------------------------------------------------- // X座標,Y座標取得 // --------------------------------------------------------------------------- for iLoopCnt := 0 to p_Property.iDotNum -1 do begin // X座標設定 pDataAry[iLoopCnt].X := pStart.X + Ceil(eMeasureX * iLoopCnt * iZoom); // Y座標設定 pDataAry[iLoopCnt].Y := pEnd.Y - Ceil(eMeasureY * (p_PrintDataAry[iLoopCnt] / 1000) * iZoom); end; // --------------------------------------------------------------------------- // グラフ描画 // --------------------------------------------------------------------------- with ActiveCanvas.Canvas do begin // 描画線書式設定 Pen.Style := p_Property.tStyle; // 線種設定 Pen.Color := p_Property.tColor; // 線色設定 Pen.Width := p_Property.iWidth; // 線幅設定 // 描画 polyLine(pDataAry); end; end;
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.