自定义形状的表单控件

时间:2019-04-10 12:27:24

标签: c# winforms pixel shapes

我对C#的了解很少,我试图制作一个WinForms应用程序来创建8x8像素的单色位图。我希望用户界面如下所示:

Form

在这里,每个黑色边框将代表一个像素,只要用户单击其中一个,它就会被黑色填充,因此将设置“像素”。

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

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

3 个答案:

答案 0 :(得分:2)

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

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

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

答案 1 :(得分:2)

您正在寻找使用 public static void main(String[] args) { printWithoutDigit(2349345, remLastDigit(2349345)); } public static void printWithoutDigit(int number, int maxDigit) { Integer.toString(number).chars().filter(digit -> Integer.valueOf(String.valueOf((char)digit))!=maxDigit).forEach(d -> System.out.print((char)d)); } 控件。 您需要以下属性(不用担心,可以在属性网格中进行设置,仅用于显示实际的属性和值):

CheckBox

然后在选中的更改事件上更改背景图像。该复选框确实允许2种状态,您将能够很好地使用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 :(得分:1)

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

VUlEPTEu

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

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

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