定制形状控件

问题描述 投票:-1回答:3

我对C#知之甚少,我正在尝试使用WinForms应用程序来创建8x8像素的单色位图。我希望用户界面如下所示:

Form

这里,每个黑色边框表示一个像素,并且当用户点击其中一个时,它将被填充为黑色,因此将设置“像素”。

我寻找一种将标准按钮控制转换为自定义形状的方法,但找不到优雅的方式。如果可能的话,我不想以编程方式创建这些黑盒子。如何创建像切换按钮一样的黑盒?

注意:我使用图形设计工具和Visual Studio创建了示例图片,它不是来自真实的应用程序。这是我想要实现的目标。将有其他表单元素来控制最终应用程序中创建的位图。

c# winforms pixel shapes
3个回答
2
投票

您正在寻找使用CheckBox控件。您需要以下属性(不要担心它可以在属性网格中设置,它只显示实际的属性和值):

CheckBox myCheckBox = new CheckBox();

// change the look to a button style
myCheckBox.Appearance = System.Windows.Forms.Appearance.Button;

// put white background to match your design
myCheckBox.BackColor = System.Drawing.Color.White;

// make button style flat to get rid of the 3d-esque look
myCheckBox.FlatStyle = System.Windows.Forms.FlatStyle.Flat;

// either center image or scale should look good
myCheckBox.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Center;

// set to your empty picture by default and on the checked changed you will swap that
myCheckBox.BackgroundImage = /* whaever image is default */;

然后在选中的已更改事件上更改背景图像。复选框允许2个状态,您将能够很好地使用Checked属性来了解更容易处理的状态,即拥有按钮并为每个存储值。


2
投票

这可以使用标准按钮完成。您需要将按钮的FlatStyle属性设置为Flat,并清空Text属性,并添加Click事件。然后可以将每个按钮的单击事件映射到以下方法:

private void Pixel_Click(object sender, EventArgs e)
{
  ((Button)sender).BackColor = ((Button)sender).BackColor == Color.Black
    ? Color.White
    : Color.Black;
}

可以在IDE中轻松调整按钮的大小以使其成为正方形。您还可以在IDE中将初始颜色设置为白色或黑色。


1
投票

首先我创建了1个按钮。 在按钮的属性中设置以下内容:

FlatStyle = Flat  
FlatAppearance => BorderColor = Black  
FlatAppearance => BorderSize = 4

然后复制并创建63个按钮并按照您的图片排列。 enter image description here

对于每个按钮创建一个单击事件,您确实喜欢以下代码,以便在单击时它将使背景颜色变为黑色。如果背景已经是黑色,则会将其设置为白色。

private void button1_Click(object sender, EventArgs e)
{
    if (button1.BackColor == Color.Black)
    {
        button1.BackColor = Color.White;
    }
    else
    {
        button1.BackColor = Color.Black;
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.