6

C# プロジェクトにいくつかの丸いボタンを配置し、その背後にいくつかのデータを配置する必要があるユーザー インターフェイスがあります。ボタンは System.Windows.Forms.buttons で、透明な GIF イメージを使用して作成しました。ただし、透明な領域は透明ではありません。オンラインで参考文献を探しましたが、これを適切に行う方法についての提案は見つかりませんでした。Visual Studio 2008 でそれを行うことについて言及されていますが、このプロジェクトは 2005 年に維持する必要があります。ヘルプや提案をいただければ幸いです。

4

8 に答える 8

1

画像の透明度を得るには、WinForms で PNG を使用する必要があると確信しています。私はそれらをうまく使ったことを知っています。

編集:PNGを使用したとき、ImageコントロールでForm1.BackgroundImageにオーバーレイしていました。私はそれらをボタンで使用していませんでした。

最善の策は、ボタン コントロールの使用からイメージ コントロールの使用に切り替えることだと思います。ボタンのスタイルをフラットに変更してみてください (フラットだったと思いますが、他のスタイルの 1 つかもしれません)、その方法で必要な効果が得られるかどうかを確認してください。

于 2008-10-14T16:08:59.180 に答える
1

Button のFlatStyle プロパティを "Flat" に設定するだけです。これが PNG で機能することはわかっていますが、GIF ではテストしていません。

于 2011-06-13T13:46:21.560 に答える
1
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Drawing;

public class TransparentControl : Control
{
    public TransparentControl()
    {
        SetStyle(ControlStyles.SupportsTransparentBackColor, true);
        SetStyle(ControlStyles.Opaque, true);
        SetStyle(ControlStyles.ResizeRedraw, true);
        this.BackColor = Color.Transparent;
    }

    protected override void OnPaint(PaintEventArgs pevent)
    {
        Graphics g = pevent.Graphics;
        g.DrawRectangle(Pens.Black, this.ClientRectangle);
    }


    protected override void OnPaintBackground(PaintEventArgs pevent)
    {
        // don't call the base class
        //base.OnPaintBackground(pevent);
    }


    protected override CreateParams CreateParams
    {
        get
        {
            const int WS_EX_TRANSPARENT = 0x20;
            CreateParams cp = base.CreateParams;
            cp.ExStyle |= WS_EX_TRANSPARENT;
            return cp;
        }
    }

    // rest of class here...
}
于 2009-09-17T03:31:39.263 に答える
1

これを試して:

        Bitmap temp = new Bitmap(button1.Image);

        temp.MakeTransparent(Color.Black); //your transparent color, in this case black

        button1.Image = (Image) Logo;

        temp.Dispose();

        temp = null;
于 2010-11-15T09:13:29.590 に答える
0

Visual Studio 2005を使用していて、上記の例に従ってみましたが、機能しませんでした(createメソッドのスニペット)。フォームの背景があり、斜角の透明なボタンを作成しようとしています。

現在、上記のコードを挿入すると、背景が透明になり、ボタンの色がすべて白になります。

これが私のコードの抜粋です

       Bitmap mainFormBackground = (Bitmap)Image.FromFile("background.jpg");
        this.BackgroundImage = mainFormBackground;
        this.BackColor = Color.Black;
        this.ForeColor = Color.White;

いくつかのボタンを追加します

        SetStyle(ControlStyles.SupportsTransparentBackColor, true);
        SetStyle(ControlStyles.Opaque, true);
        this.BackColor = Color.Transparent;

私も試しました

         btnName.BackColor = Color.Transpare;

これもうまくいきませんでした

于 2009-07-24T02:24:10.317 に答える
0

ボタンから派生したクラスを作成し、このコードを配置します。

    protected override CreateParams CreateParams
    {
        get
        {
            const int WS_EX_TRANSPARENT = 0x20;
            CreateParams cp = base.CreateParams;
            cp.ExStyle |= WS_EX_TRANSPARENT;
            return cp;
        }
    }

そしてcreateメソッドで

        SetStyle(ControlStyles.SupportsTransparentBackColor, true);
        SetStyle(ControlStyles.Opaque, true);
        this.BackColor = Color.Transparent;
于 2009-05-05T16:45:45.933 に答える
0

次の回答は Visual Studio 2012 で検証されており、backgroundImage 形式の BMP、GIF、PNG、および JPG で動作します。MSペイントで作成。

ボタンから背景を表示するには:

ボタンのプロパティ ウィンドウに移動します。次に、以下の画像に示すように FlatStyle と BackColor を変更します。

FlatStyle は Flat として選択されます

色はWebタブから選択

注: 色は Web タブから選択し、FlatStyle は Flat として選択します。

ただし、この後、マウスがホバーしないか、選択または押されるまで、ボタンは透明になります。その状態では、不透明な色になります。常に透明にしたい場合は、以下の画像に従って、対応する色を以前のように透明に変更します。変更する色は、「MouseOverBackColor」と「MouseDownBackColor」です。

ここに画像の説明を入力

ここに画像の説明を入力

注: 図のように常に透明を選択すると、ボタンが動作している間、ボタンの外観に変化はありません。

それがあなたを助けることを願っています。

頑張ってください!

于 2014-05-24T12:52:27.437 に答える
0

ボタンの BackColor プロパティを「透明」に設定する必要があります。

Button1.BackColor = System.Drawing.Color.Transparent;

于 2008-10-22T22:18:07.590 に答える