- PR -

C#でLineコントロール

1
投稿者投稿内容
ぴんふ
ベテラン
会議室デビュー日: 2006/07/13
投稿数: 80
投稿日時: 2006-08-03 18:13
こんにちは。ぴんふです。
<はじめに>
VB6.0では実装されていたLineコントロールですが、
C#では実装されていませんよね?
皆さんはC#でLineコントロール(的なもの)が必要
なときはどうされていますでしょうか?
LabelのWidthを狭くして擬似的に見せる等の方法はあるでしょうが
それはあまりやりたくないので・・・。

1.今回私がやりたいこと
@2点鎖線のLineコントロールをC#で実現したい。(フォーム内のグラフを見やすくするための補助線として使用)
ALineはドラッグしてフォーム内を移動可能とする。

2.これまでに試したこと
@UserControlにピクチャボックスを貼ってそこに2点鎖線を描画した。
ドラッグはUserControlのMouseDown,MouseMove,MouseUpで実現した。
→問題点としては2点鎖線の余白が透明でないので見づらい

A@の余白の問題を解決するために余白の透明化を行った。
ソースはこんな感じ
public partial class XXXX : UserControl
//中略
private void SetRegion() //このメソッドをUserContrlのコンストラクタとSizeChangedイベントでコール
{
System.Drawing.Drawing2D.GraphicsPath path =
new System.Drawing.Drawing2D.GraphicsPath(System.Drawing.Drawing2D.FillMode.Winding);
this.Region = new Region(path);
}
→問題点としては2点鎖線もろともピクチャーボックスが見えなくなった。

3.環境
WinXp
VS2005 C#(Framework2.0)

4.参考にしたページ
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=25022&forum=7

どなたかアドバイスを頂けませんか?よろしくお願いします。
以上。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-08-03 18:16
引用:

ぴんふさんの書き込み (2006-08-03 18:13) より:

皆さんはC#でLineコントロール(的なもの)が必要なときはどうされていますでしょうか?


VS2005 での罫線とか図形について

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
かるあ
ぬし
会議室デビュー日: 2003/11/16
投稿数: 1190
お住まい・勤務地: センガワ→ムサシノ
投稿日時: 2006-08-03 18:22
前にこんなスレッドがありましたね、
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=31889&forum=7&2

わんくま のライブラリで実現できるのかな?

# かぶりまくり(汗

[ メッセージ編集済み 編集者: かるあ 編集日時 2006-08-03 18:24 ]
ぴんふ
ベテラン
会議室デビュー日: 2006/07/13
投稿数: 80
投稿日時: 2006-08-03 18:32
じゃんぬねっとさん
かるあさん
早速のご返答ありがとうございます。
過去スレは検索したのですがキーワードが
良くなかったようです。

「わんくまライブラリ」
のやり方を踏襲した上で、Penのスタイルを変更
すればずばりそのものが実現できそうです。
結果は追ってお知らせします。
重ね重ねありがとうございました。
ぴんふ
ベテラン
会議室デビュー日: 2006/07/13
投稿数: 80
投稿日時: 2006-08-03 19:33
ぴんふです。結果報告です。
「わんくまライブラリ」のやり方でやってみました。
線は引けました。
が、「ずばりそのものが実現できそう」
とか自分で言っておきながら見落としていた点がありました。

それは余白(ユーザーコントロール内の線の描画されていない部分)
が透明にできないために見づらいという点です。

この線の後ろにはグラフを描画する別のコントロールや
ラベルなどを置きたいので、
線の余白部分は透明にしたいのです。
ユーザーコントロールのBackColorをTransParentにしても
対象となる親が複数なので無理ですし、
私の最初の発言にあるとおり、
Regionの設定で透明化しようとしたら駄目だったので
(私のRegionの設定方法に問題があるのかもしれませんが・・・)
どなたかご教授願えませんか?よろしくお願いします。
sou
ベテラン
会議室デビュー日: 2002/09/25
投稿数: 56
投稿日時: 2006-08-05 19:02
GraphicsPathに何も描画していないからなのでは・・?
参考にしているページでジブさんが書いているように(3ページ目)
AddXXX系のメソッドで描画をしないダメなのでは。

(以下ジブさんのコードより)
引用:

コード:
Private Sub SetRegion()
        _path = New System.Drawing.drawing2d.GraphicsPath(Drawing2D.FillMode.Winding)
        _path.AddString(_Caption, _font.FontFamily, _font.Style, _font.Height, New Point(0, 0), StringFormat.GenericDefault)
        MyBase.Region = New System.Drawing.Region(_path)
    End Sub




ぴんふ
ベテラン
会議室デビュー日: 2006/07/13
投稿数: 80
投稿日時: 2006-08-07 16:43
SOUさんへ

ご指摘ありがとうございます。
調査してみます。結果報告が遅れるかもしれませんが・・・。
何卒ご容赦を。

以上
1

スキルアップ/キャリアアップ(JOB@IT)