kzen.dev
  • Вопросы
  • Метки
  • Пользователи
Оповещения
Вознаграждения
Регистрация
После регистрации, сможете получать уведомления об ответах и комментариях на Ваши вопросы.
Вход
Если у Вас уже есть аккаунт, войдите чтобы проверить новые уведомления.
Тут будут вознаграждения за добавленные вопросы, ответы и комментарий.
Дополнительно
Источник
Редактировать
Eitan Yona
Eitan Yona
Вопрос

Кнопки в проекте удаляют квадраты?

У меня проблема с моим проектом C# winform.

У меня есть функция, которая рисует квадраты:

public void DrawingSquares(int x, int y)
{
  System.Drawing.Graphics graphicsObj;
  graphicsObj = this.CreateGraphics();
  Pen myPen = new Pen(System.Drawing.Color.Black, 5);
  Rectangle myRectangle = new Rectangle(x, y, 100, 100);
  graphicsObj.DrawRectangle(myPen, myRectangle);
}

private void button1_Click(object sender, EventArgs e)
{
  z = Convert.ToInt16(textBox1.Text)-1;
  k = Convert.ToInt16(textBox2.Text)-1;
  DrawAllSquares();
}

private void DrawAllSquares()
{
  int tempy = y;
  for (int i = 0; i < z; i++)
  {
    DrawingSquares(x, y);
    for (int j = 0; j < k - 1; j++)
    {
      tempy += 50;
      DrawingSquares(x, tempy);
    }
    x += 50;
    tempy = y;
  }
}

В моем проекте есть функция, которую я использую для перемещения кнопки по форме во время выполнения, но когда кнопка перемещается на рисунок, рисунок удаляется.

Что я могу сделать, чтобы сделать рисунок постоянным?

0 2012-04-22T14:20:19+00:00 1
 KingCronus
KingCronus
Редактировал вопрос 23-го апреля 2012 в 8:51
Программирование
winforms
c#
drawing
Решение / Ответ
 Tigran
Tigran
22-го апреля 2012 в 2:27
2012-04-22T14:27:41+00:00
Дополнительно
Источник
Редактировать
#16003970

Если вам нужно постоянно (с точки зрения времени жизни приложения), любыми способами, вам нужно использовать внутри вашего Control's (Control, где прямоугольник должен быть нарисован), метод OnPaint.

Если вам также нужна анимация: это можно решить, используя таймер и изменяя координаты, которые вы передаете как параметры в ваш DrawSquares.

Надеюсь, это поможет.

EDIT

Псевдокод:

public class MyControl : Control 
{
    public override void OnPaint(PaintEventArgs e)
    {
       base.OnPaint(e); 

       DrawingSquares(e.Graphics, valueX, valueY);
    }

    public void DrawingSquares(Graphics graphicsObj, int x, int y)
    {      
       Pen myPen = new Pen(System.Drawing.Color.Black, 5);
       Rectangle myRectangle = new Rectangle(x, y, 100, 100);
       graphicsObj.DrawRectangle(myPen, myRectangle);
    }

}

valueX и valueY - относительные координаты X и Y, в которых вы хотите нарисовать прямоугольник.

Эти координаты могут быть постоянными значениями, или вы можете изменить их по таймеру и вызвать Invalidate() на MyControl, так что paint будет выполнен.

 Tigran
Tigran
Редактировал ответ 23-го апреля 2012 в 8:46
2
0
Похожие сообщества 6
Microsoft Stack Jobs
Microsoft Stack Jobs
2 408 пользователей
Work & freelance only Microsoft Stack. Feed https://t.me/Microsoftstackjobsfeed Чат про F#: @Fsharp_chat Чат про C#: @CSharpChat Чат про Xamarin: @xamarin_russia Чат общения:@dotnettalks
Открыть telegram
С#
С#
2 330 пользователей
Стараемся не флудить. Пишем по делу. Правила: https://t.me/professorweb/430450 Для флуда @svoboda_obsh
Открыть telegram
CODE BLOG / C#
CODE BLOG / C#
1 763 пользователей
Чат для .NET разработчиков и C# программистов. По всем вопросам: @shwanoff Youtube-канал: https://youtube.com/codeblog Основной канал: @codeblog Вконтакте: https://vk.com/codeblog Правила: https://t.me/codeblog_csharp/246972 Вакансии по тегу #work
Открыть telegram
var chat = new Chat();
var chat = new Chat();
1 428 пользователей
Обсуждение вопросов по .NET Правила чата – https://blog.devdigest.today/chat-rules Чат для флуда – https://t.me/+zwxI91RGG6s2YzAy
Открыть telegram
C#/.NET Для Новичков
C#/.NET Для Новичков
293 пользователей
Группа создана для тех, кто изучает язык программирования C#. Верховный главнокомандующий: @BlackDeveloper Оффтоп - разрешен в меру, реклама - бан.
Открыть telegram
ext
ext
31 пользователей
Общение на темы YouTube канала и программирования. Вакансии не размещаем. Основной канал: @extremecode
Открыть telegram
Добавить вопрос
Категории
Все
Технологий
Культура / Отдых
Жизнь / Искусство
Наука
Профессии
Бизнес
Пользователи
Все
Новые
Популярные
1
Денис Васьков
Зарегистрирован 16 часов назад
2
Dima Patrushev
Зарегистрирован 2 дня назад
3
sirojidddin otaboyev
Зарегистрирован 1 неделю назад
4
Елена Гайдамамакинат
Зарегистрирован 1 неделю назад
5
Иван Степанюк
Зарегистрирован 1 неделю назад
RU
© kzen.dev 2023
Источник
stackoverflow.com
под лицензией cc by-sa 3.0 с атрибуцией