1

パネルに長方形を描く必要があります。事前に色がわからない、実行時に色を取得する、色を固定値以外に設定する方法がわからない、そして次に-長方形を描画しようとしても何もしません。長方形を描画する必要がある私のコードは次のとおりです(実際には別のプロジェクトで行いますが、それはパネルではなく単純な形式です)

    Graphics g;  
    g = CreateGraphics();  
    Pen p;  
    Rectangle r;  
    p = new Pen(Brushes.Blue); 
    r = new Rectangle(1, 1, 578, 38);  
    g.DrawRectangle(p, r);`  

したがって、(Brushes.Blue) を変数に置き換える必要があり、このコードで設定された座標でパネルに四角形を描画する必要があります..

4

5 に答える 5

1

コンストラクターの代わりにコンストラクターをPen使用して構築します。次に、色がわかったら、色を定義できます。Pen(Color)Pen(Brush)

于 2012-12-10T19:44:24.317 に答える
0

Paintパネルのイベントで描画を実行する必要があります。このイベントは、Windowsがパネルを再描画する時期であり、長方形を描画できるオブジェクトがPaintEventArgs含まれていると判断した場合に発生します。Graphics

Brush抽象クラスですが、SolidBrushオブジェクトを使用して、実行時にカスタムの色付きブラシを作成できます。

int red = 255;
int green = 0;
int blue = 0;
Brush myBrush = new SolidBrush(Color.FromArgb(red, green, blue));
于 2012-12-10T19:44:21.073 に答える
0

はい、どうぞ:

private Color _color;                 // save the color somewhere
private bool iKnowDaColor = false;    // this will be set to true when we know the color
public Form1() {
    InitializeComponents();

    // on invalidate we want to be able to draw the rectangle
    panel1.Paint += new PaintEventHandler(panel_Paint);
}

void panel_Paint(object sender, PaintEventArgs e) {
    // if we know the color paint the rectangle
    if(iKnowDaColor) {
        e.Graphics.DrawRectangle(new Pen(_color),
            1, 1, 578, 38);
    }
}

そして、あなたが色を知っているとき:

_color = ...
iKnowDaColor = true;

// causes the panel to invalidate and our painting procedure to be called
panel.Invalidate();

私はこれをテストしていませんが、基本的な考え方を説明する必要があります。

于 2012-12-10T19:44:44.163 に答える
0

それを行うより良い方法は、Panel クラスを拡張し、カスタムの OnPaint イベント ロジックを追加することだと思います。

public class PanelRect : Panel
{
    protected override void OnPaint(PaintEventArgs e)
    {
        base.OnPaint(e);

        using (Graphics g = e.Graphics)
        {
            Rectangle rect = ClientRectangle;
            rect.Location = new Point(20, 20);                  // specify rectangle relative position here (relative to parent container)
            rect.Size = new Size(30, 30);                       // specify rectangle size here

            using (Brush brush = new SolidBrush(Color.Aqua))    // specify color here and brush type here
            {
                g.FillRectangle(brush, rect);
            }
        }
    }
}

PS これは高度な例ではありませんが、役に立つかもしれません。サイズ、場所、色などをプロパティに移動できるので、デザイナーから簡単に変更できます。

PSPS 塗りつぶされていない長方形が必要な場合は、Brush の代わりに Pen オブジェクトを使用してください (FillRectangle をより適切なものに変更することもできます)。

于 2012-12-10T19:58:53.957 に答える
0

次のコードを適切な場所に配置します。

Graphics g = panel1.CreateGraphics();
int redInt=255, blueInt=255, greenInt=255; //255 is example, give it what u know
Pen p = new Pen(Color.FromArgb(redInt,blueInt,greenInt));
Rectangle r = new Rectangle(1, 1, 578, 38);
g.DrawRectangle(p, r);

四角形を別の場所、たとえばフォームに描画したい場合は、g = this.CreateGraphics.

于 2012-12-10T20:05:15.297 に答える