C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: カスタムコントロールにスクロールバーを表示する方法。


(過去ログ 151 を表示中)

[トピック内 5 記事 (1 - 5 表示)]  << 0 >>

■87706 / inTopicNo.1)  カスタムコントロールにスクロールバーを表示する方法。
  
□投稿者/ Take (1回)-(2018/06/21(Thu) 17:14:34)

分類:[C#] 

2018/06/21(Thu) 17:18:15 編集(投稿者)

C# .NetFramework 3.5

カスタムコントロール(Controlクラスを継承しています)を作成し、
OnPaint() で画面を描画しています。

ここに縦横にスクロールバーを表示したいのですが、
どうやって表示させたらいいでしょうか?

HScrollBar を new して Location と Size を指定しても表示されません。


OnPaintは下記の様な事をしています。

protected override void OnPaint(PaintEventArgs pe)
{
base.OnPaint(pe);

Bitmap bmp = new Bitmap(this.Size.Width, this.Size.Height);
Graphics grp = Graphics.FromImage(bmp);

色々と描画

pe.Graphics.DrawImage(bmp, new Point(0, 0));
}



以上、よろしくお願いします。
引用返信 編集キー/
■87707 / inTopicNo.2)  Re[1]: カスタムコントロールにスクロールバーを表示する方法。
□投稿者/ shu (1123回)-(2018/06/21(Thu) 17:27:02)
No87706 (Take さん) に返信

コントロールが2つ以上の場合、
UserControlにした方がよいです。

引用返信 編集キー/
■87711 / inTopicNo.3)  Re[1]: カスタムコントロールにスクロールバーを表示する方法。
□投稿者/ 魔界の仮面弁士 (1719回)-(2018/06/22(Fri) 09:36:02)
No87706 (Take さん) に返信
> カスタムコントロール(Controlクラスを継承しています)を作成し、
> OnPaint() で画面を描画しています。
> ここに縦横にスクロールバーを表示したいのですが、
> どうやって表示させたらいいでしょうか?


using System.Drawing;
using System.Drawing.Drawing2D;
using System.Windows.Forms;

namespace Example
{
  public partial class UserControl1 : UserControl
  {
    public UserControl1()
    {
      InitializeComponent();
      DoubleBuffered = true;
      AutoScroll = true;
      var dummy = new Control();
      dummy.TabStop = false;
      dummy.TabIndex = int.MaxValue;
      dummy.SetBounds(3000, 3000, 0, 0);
      Controls.Add(dummy);
    }

    protected override void OnScroll(ScrollEventArgs se)
    {
      base.OnScroll(se);
      Invalidate();
    }

    protected override void OnPaint(PaintEventArgs e)
    {
      var bounds = new Rectangle(AutoScrollPosition, new Size(3000, 3000));
      using (var gb = new LinearGradientBrush(bounds,
        Color.LemonChiffon, Color.Blue, LinearGradientMode.ForwardDiagonal))
      {
        e.Graphics.FillRectangle(gb, bounds);
      }
      base.OnPaint(e);
    }
  }
}
引用返信 編集キー/
■87714 / inTopicNo.4)  Re[1]: カスタムコントロールにスクロールバーを表示する方法。
□投稿者/ 魔界の仮面弁士 (1720回)-(2018/06/22(Fri) 12:38:43)
No87706 (Take さん) に返信
> protected override void OnPaint(PaintEventArgs pe)
> {
>  base.OnPaint(pe);
>  Bitmap  bmp = new Bitmap(this.Size.Width, this.Size.Height);
>  Graphics grp = Graphics.FromImage(bmp);
>  色々と描画
>  pe.Graphics.DrawImage(bmp, new Point(0, 0));
> }

Bitmap や Graphics の解放が漏れていませんか?

using(Bitmap bmp = new Bitmap(this.Size.Width, this.Size.Height))
using(Graphics grp = Graphics.FromImage(bmp))
{
 色々と描画
 pe.Graphics.DrawImage(bmp, new Point(0, 0));
}


引用返信 編集キー/
■87781 / inTopicNo.5)  Re[2]: カスタムコントロールにスクロールバーを表示する方法。
□投稿者/ Take (2回)-(2018/06/29(Fri) 15:36:18)
shu様、魔界の仮面弁士様

UserControlにすることで
無事スクロールバーを表示する事ができました。

返事とお礼が遅くなてしまい申し訳ありませんでした。

助かりました。
ありがとうございます。

解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -