
No.2ベストアンサー
- 回答日時:
こんばんは。
ん? リージョンの事ですかねえ。
http://dobon.net/vb/dotnet/form/formregion.html
RoundRectangleのリージョンは存在しないので、チョッと面倒みたいです。
http://www.geekpedia.com/code112_Draw-Rounded-Co …
上記のソースを御拝借して書くと、こんな感じです。かなり雑ですが、参考程度に。
後はTextBoxのBorderStyleをNoneにしておいて、TextBox用のペイントハンドラで、RoundRectangleの枠を描いて見てください。
private void SetRoundRect(Control ctl, float radius)
{
int width = ctl.Width;
int height = ctl.Height;
System.Drawing.Drawing2D.GraphicsPath gp = new System.Drawing.Drawing2D.GraphicsPath();
gp.AddLine(radius, 0, width - (radius * 2), 0); // Line
gp.AddArc(width - (radius * 2), 0, radius * 2, radius * 2, 270, 90); // Corner
gp.AddLine(width, radius, width, height - (radius * 2)); // Line
gp.AddArc(width - (radius * 2), height - (radius * 2), radius * 2, radius * 2, 0, 90); // Corner
gp.AddLine(width - (radius * 2), height, radius, height); // Line
gp.AddArc(0, height - (radius * 2), radius * 2, radius * 2, 90, 90); // Corner
gp.AddLine(0, height - (radius * 2), 0, radius); // Line
gp.AddArc(0, 0, radius * 2, radius * 2, 180, 90); // Corner
gp.CloseFigure();
ctl.Region = new Region(gp);
}
private void Form1_Load(object sender, EventArgs e)
{
SetRoundRect(this.textBox1, 20.0F);
}
この回答への補足
すいません。
上記コードを実行したのですが、角のラインがどうしてもうまく描けません。
塗りつぶしは角丸になっているのですが、ラインが消えてしまいます。
アドバイスお願いします。m(__)m
No.3
- 回答日時:
こんばんは。
補足頂きました。チョッと正攻法では無理な様ですので、枠を描かせない様にして下さい。
フォームデザイナで、黒いパネルコントロールを貼り付けて、そのパネルコントロールの上にテキストボックスを乗せてください。
その黒いパネルコントロールも一緒に、リージョンをかければ、テキストボックスの枠の様に見せかけれるでしょう。
パネルコントロールは、テキストボックスよりも、+2程大きめに調整します。これはプログラムの中で行った方が楽です。
後、フォームデザイナでパネルコントロールを配置した時、テキストボックスが隠れてしまったら、パネルコントロールを右クリックし、「最背面へ移動」を選択してください。
これで、パネルコントロールの上にテキストボックスが来る筈です。
以下の様にして見てください。
private void Form1_Load(object sender, EventArgs e)
{
panel1.Location = new Point(textBox1.Location.X - 2, textBox1.Location.Y - 2);
panel1.Size = new Size(textBox1.Width + 4, textBox1.Height + 4);
SetRoundRect(this.textBox1, 20.0F);
SetRoundRect(this.panel1, 20.0F);
}
何度もすいません。アドバイスありがとうございます。
正攻法では無理なんですね。残念です。
背景を少し見せるテクニック、非常に参考になりました。
もう一度挑戦してみます。m(__)m
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
C#を用いて描画する四角形の角を丸くする方法
C言語・C++・C#
-
【VB】タブ切り替え時のイベント
Visual Basic(VBA)
-
C#についてText Boxの枠
その他(ソフトウェア)
-
-
4
C#でButtonのフォーカス枠を消したいのですが
C言語・C++・C#
-
5
全てのオブジェクトのプロパティーを一気に変更する方法
Visual Basic(VBA)
-
6
「指定されたキャストは有効ではありません。」とエラーが出てしまいます。
Microsoft ASP
-
7
VB.NET2005 TextBox 高さ(Height) 変更
Visual Basic(VBA)
-
8
DataGridViewのチェックボックスのON、OFFの判定方法
C言語・C++・C#
-
9
C# のテキストボックスデザインについて
その他(プログラミング・Web制作)
-
10
C# ログイン画面からメイン画面への画面遷移について
C言語・C++・C#
-
11
C#で動的に作ったtextboxを消す。
C言語・C++・C#
-
12
C#でbyte配列から画像を表示させたい
C言語・C++・C#
-
13
C# 超初心者です。 this.Refresh();という文を使いたいです
C言語・C++・C#
-
14
C# DataTableに最後に追加した行をDataGridView上で選択状態にする方法は?
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ExcelVBAのコントロールの種類...
-
EXCELでactivexコントロールを...
-
アクセス特有の書き方?
-
ExcelVBAでListViewが使用できない
-
エクセルVBAでオプションボタン...
-
'ckbl' コントロールは作成され...
-
VBA ユーザーフォームの Keypre...
-
エクセル・VBA CheckBoxのオブ...
-
listviewの設定について
-
Excel VBA で Richtextboxを使...
-
コントロール配列と同じような...
-
ビープ音鳴らし続けたい。
-
ActiveX DLL と ActiveXコント...
-
VBからのTIFFファイルの編集に...
-
PDF起動時のナビゲーションパネ...
-
(VBA)スピンボタンの大量...
-
C# 子のコントロールからイベン...
-
ASP.netのエラー 2005から2008...
-
C# タブのコントロール取得
-
ユーザーフォームで動的(Me.Con...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ExcelVBAのコントロールの種類...
-
EXCELでactivexコントロールを...
-
ExcelVBAでListViewが使用できない
-
'ckbl' コントロールは作成され...
-
カメラスクロールするのを動画...
-
VBA ユーザーフォームの Keypre...
-
vb.netで画面のコントロールId...
-
エクセル・VBA CheckBoxのオブ...
-
chr関数の呼び出しで「プロ...
-
エクセルVBAでオプションボタン...
-
Groupboxの配下のコントロール...
-
エクセル コントロールツール...
-
Labelコントロールの(左右)余...
-
チェックボックスをオンにした...
-
Excel VBA で Richtextboxを使...
-
アクセス特有の書き方?
-
(VBA)スピンボタンの大量...
-
ActiveX DLL と ActiveXコント...
-
C# ユーザコントロール内のボタ...
-
Excel VBA 動的に作成したチェ...
おすすめ情報