Я делаю приложение на приложении форм Windows. Он называется артгенератором.Рисование более 1 графики на pictureBox1 с button_Click + смешение графики
Смысл этого приложения заключается в том, что каждый раз, когда я нажимаю кнопку, например кнопку «эллипс», эллипс будет нарисован на форме. Теперь все идет гладко, пока я не нажимаю все три кнопки после друг друга. Затем приложение объединяет все цифры в 1. И это не то, что я хочу. Также после того, как я нарисую 1 эллипс, квадрат или линию, и снова нажмите одну и ту же кнопку, и графический дисплей исчезнет, и появится новая. Как исправить эти проблемы?
Я пошлю мой код внизу:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Kunstgenerator
{
public partial class Form1 : Form
{
bool TekenCirkel = false;
bool TekenRechthoek = false;
bool TekenLijn = false;
public Form1()
{
InitializeComponent();
}
private void button4_Click(object sender, EventArgs e)
{
pictureBox1.Hide();
}
private void btnCirkel_Click(object sender, EventArgs e)
{
TekenCirkel = true;
pictureBox1.Show();
pictureBox1.Refresh();
}
private void btnRechthoek_Click(object sender, EventArgs e)
{
TekenRechthoek = true;
pictureBox1.Show();
pictureBox1.Refresh();
}
private void btnLijn_Click(object sender, EventArgs e)
{
TekenLijn = true;
pictureBox1.Refresh();
pictureBox1.Show();
}
private void pictureBox1_Resize(object sender, EventArgs e)
{
Refresh();
}
private void pictureBox1_Paint(object sender, PaintEventArgs e)
{
// Er wordt een Random aangemaakt.
Random random = new Random();
// Breedte en hoogte wordt aangemaakt en verwezen naar zichzelf.
// Hier wordt de Random gebruikt om een willekeurige hoogte en breedte te maken.
int width = random.Next(this.Width);
int height = random.Next(this.Height);
// Primaire kleuren Rood, Geel, Blauw worden hier aangemaakt.
// Door de Random is de kleuren willekeurig. Er wordt een kleur uitgekozen tussen 1 en 255
int r = random.Next(255);
int g = random.Next(255);
int b = random.Next(255);
if (TekenRechthoek)
{
Graphics graphics = e.Graphics;
if (random.Next(2) == 0)
{
graphics.FillRectangle(new SolidBrush(Color.FromArgb(r, g, b)), width, height, width, height);
}
else
{
graphics.DrawRectangle(new Pen(new SolidBrush(Color.FromArgb(r, g, b))), width, height, width, height);
}
}
if (TekenLijn)
{
Graphics graphics = e.Graphics;
graphics.DrawLine(new Pen(new SolidBrush(Color.FromArgb(r, g, b))), width, height, width, 100);
}
if (TekenCirkel)
{
Graphics graphics = e.Graphics;
if (random.Next(2) == 0)
{
graphics.FillEllipse(new SolidBrush(Color.FromArgb(r, g, b)), width, height, width, height);
}
else
{
graphics.DrawEllipse(new Pen(new SolidBrush(Color.FromArgb(r, g, b))), width, height, width, height);
}
}
}
}
}
Это весь код. Я также привел здесь фотографию, чтобы показать вам, что я имею в виду, комбинируя графику.
одна вещь. Поскольку мой размер и расположение графики являются случайными, все они исчезают (полу-иш) с экрана. Это исправление или эта часть случайности?
Заранее спасибо
Btw Я новичок в программировании
'это не то, что я хочу', что ** делать ** вы хотите? трудно предложить решение, не зная об этом. – Plutonix
Вы устанавливаете новый, но не перезагружаете старые графические типы. Также: читайте на Enum !! – TaW
Рассмотрите возможность использования 'enum' с оператором' switch() ' – ja72