Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.81/26: Рейтинг темы: голосов - 26, средняя оценка - 4.81
0 / 0 / 0
Регистрация: 26.04.2010
Сообщений: 8

System.Drawing.Graphics сам очищается

22.06.2010, 19:01. Показов 5243. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Подскажите пожалуйста: когда рисую с помощью System.Drawing.Graphics и потом сворачиваю окно, то все что нарисовал пропадает, можно ли как-то этого избежать?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
22.06.2010, 19:01
Ответы с готовыми решениями:

Graphics.SetClip Method (GraphicsPath) и Graphics.Clear Method vs Graphics.FillPath Method (System.Drawing)
У нас два способа залить форму: 1. Graphics.SetClip Method (GraphicsPath) and Graphics.Clear 2. Graphics.FillPath Method...

Как получить System.Drawing.FontStyle из System.Drawing.Font ?
Font textFont = new Font("Verdana", 26f, FontStyle.Bold | FontStyle.Italic); Как получить из textFont его FontStyle ?

Как исправить исключение System.StackOverflowException в System.Drawing.dll
An unhandled exception of type 'System.StackOverflowException' occurred in System.Drawing.dll что делать все работала нормально и...

11
 Аватар для tasty_sock
139 / 137 / 21
Регистрация: 26.01.2010
Сообщений: 350
22.06.2010, 19:26
Покажи, как рисуешь.

C#
1
2
3
4
5
        private void Form8_Paint(object sender, PaintEventArgs e)
        {
            Graphics g = this.CreateGraphics();
            g.DrawLine(Pens.Red, new Point(150, 150), new Point(300, 150));
        }
Здесь ничего не пропадает.
0
|____WTF!?____|
 Аватар для stalkersev
95 / 94 / 11
Регистрация: 01.06.2010
Сообщений: 227
22.06.2010, 19:56
Используй:

C#
1
this.Invalidate();
Кинь его в таймер или в:

C#
1
2
 private void Form1_Resize(object sender, EventArgs e)
        {}
Когда я давно делал paint мне это помогло
0
0 / 0 / 0
Регистрация: 26.04.2010
Сообщений: 8
22.06.2010, 20:02  [ТС]
C#
1
2
3
4
5
6
7
private void button1_Click(object sender, EventArgs e)
{
      System.Drawing.Graphics formGraphics = this.CreateGraphics();
      System.Drawing.Pen myPen;
      myPen = new System.Drawing.Pen(System.Drawing.Color.Black);
      formGraphics.DrawEllipse(myPen, 0, 0, 200, 200);
}
Вот так пропадает

Добавлено через 2 минуты
твой пример не помог
0
|____WTF!?____|
 Аватар для stalkersev
95 / 94 / 11
Регистрация: 01.06.2010
Сообщений: 227
22.06.2010, 20:35
час разберусь...
0
|____WTF!?____|
 Аватар для stalkersev
95 / 94 / 11
Регистрация: 01.06.2010
Сообщений: 227
22.06.2010, 20:48
Ну вот как-то так, только без кнопки



WindowsFormsApplication1.rar
:goo d:
:goo d:
0
|____WTF!?____|
 Аватар для stalkersev
95 / 94 / 11
Регистрация: 01.06.2010
Сообщений: 227
22.06.2010, 21:11
Вот проект:

WindowsFormsApplication1.rar


|
| Не забываем говорить спасибо
|
\/
0
0 / 0 / 0
Регистрация: 26.04.2010
Сообщений: 8
22.06.2010, 23:13  [ТС]
Написано на старшей версии визуала чем у меня(2008) не идет нормально дайте код просто пожалуйста

Добавлено через 1 час 35 минут
вот в книге нашел пример
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
namespace Example1_1 
{ 
    public partial class Form1 : Form 
    { 
        public Form1() 
        { 
            InitializeComponent(); 
            this.SetStyle(ControlStyles.ResizeRedraw, true); 
     this.BackColor = Color.White;  
        } 
 
        protected override void OnPaint(PaintEventArgs e) 
        { 
            Graphics g = e.Graphics; 
            // Following codes draw a line from (0, 0) to (1, 1) in unit of inch: 
            g.PageUnit = GraphicsUnit.Inch; 
            Pen blackPen = new Pen(Color.Black, 1 / g.DpiX); 
            g.DrawLine(blackPen, 0, 0, 1, 1); 
        } 
    } 
}
0
 Аватар для kuroiryuu
328 / 312 / 68
Регистрация: 05.11.2009
Сообщений: 712
23.06.2010, 10:18
если желаете, чтобы после нажатия кнопки у вас изображение оставалось на экране, то можно это сделать так:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
 
namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        bool flg = false;
 
        public Form1()
        {
            InitializeComponent();
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            flg = !flg;
            this.Refresh();
        }
 
        private void Form1_Paint(object sender, PaintEventArgs e)
        {
            if (flg)
            {
                String drawString = "Sample Text";
 
                Font drawFont = new Font("Arial", 16);
                SolidBrush drawBrush = new SolidBrush(Color.Black);
 
                PointF drawPoint = new PointF(110.0F, 150.0F);
 
                e.Graphics.DrawString(drawString, drawFont, drawBrush, drawPoint);
 
            }
        }
    }
}
0
|____WTF!?____|
 Аватар для stalkersev
95 / 94 / 11
Регистрация: 01.06.2010
Сообщений: 227
23.06.2010, 10:31
Вот тут всё просто и понятно

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using Microsoft.Win32;
using System.Runtime.InteropServices;
 
 
 
namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
     
        public Form1()
        {
            InitializeComponent();
         
        }
      
        
        
        protected override void OnPaint(PaintEventArgs e)
        {
 
                Graphics g = e.Graphics;
 
 
                using (Pen black = new Pen(Color.Black, 1))
                {
 
                    g.DrawEllipse(black, 10, 10, 200, 200);
 
 
                }
 
           
            base.OnPaint(e);
        }
 
      
    }
}
0
 Аватар для ][irurg
181 / 180 / 38
Регистрация: 16.06.2010
Сообщений: 511
23.06.2010, 17:35
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
using System;
using System.Windows.Forms;
using System.Drawing;
 
namespace WindowsFormsApplication1
{
    
    public partial class Form1 : Form
    {
        public Graphics gb  ;
        public Graphics gf  ;
        public Bitmap   b   ;
        public Random r;
 
        public Form1()
        {
            InitializeComponent();
            b = new Bitmap(this.Width,this.Height);
            gb = Graphics.FromImage(b);
            gf = this.CreateGraphics();
            r = new Random();
        }
 
 
        private void button1_Click_1(object sender, EventArgs e)//нарисовать бублик
        {
            gb.DrawEllipse(Pens.Black,new Rectangle(r.Next(20,this.Width),r.Next(20,this.Height),20,30));
            gf.DrawImage(b,new Point(0,0));
        }
 
        private void Form1_Paint(object sender, PaintEventArgs e)
        {
            gf.DrawImage(b, 0, 0);
        }
 
        private void button2_Click(object sender, EventArgs e)//нарисовать линию
        {
            gb.DrawLine(Pens.Red, new Point(r.Next(0, this.Width), r.Next(0, this.Height)), new Point(r.Next(0, this.Width), r.Next(0, this.Height)));
            gf.DrawImage(b, new Point(0, 0));
        }
    }
}
0
|____WTF!?____|
 Аватар для stalkersev
95 / 94 / 11
Регистрация: 01.06.2010
Сообщений: 227
23.06.2010, 18:58
Да, да kuroiryuu прав, нужно с флагом делать:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using Microsoft.Win32;
using System.Runtime.InteropServices;
 
 
 
namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        Image im;
        Graphics m;
         bool flg = false;
        public Form1()
        { 
            InitializeComponent();
            im = new Bitmap(this.Width, this.Height);
            m = Graphics.FromImage(im);
      
        } 
      
        
        
        protected override void OnPaint(PaintEventArgs e)
        {
 
               Graphics g = e.Graphics;
 
               if (flg)
               {
                   using (Pen black = new Pen(Color.Black, 1))
                   {
 
                       g.DrawEllipse(black, 10, 10, 200, 200);
 
 
                   }
 
               }
            base.OnPaint(e);
        }
       
 
        private void button1_Click_1(object sender, EventArgs e)
        {
            flg = !flg;
            this.Refresh();
        }
 
  
    }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
23.06.2010, 18:58
Помогаю со студенческими работами здесь

Необработанное исключение типа "System.IO.FileNotFoundException" произошло в System.Drawing.dll
Выскакивает вот такая ошибка, не знаю, что делать. Я начинающий программист, очень прошу объяснить так, что бы я понял) Очень прошу помочь,...

Исключение "System.ArgumentException" в System.Drawing при вызове ellipse.Clear()
Я хочу создать приложение которое будет называться "магический шар" нажимаешь на старт появляеться желто-зеленый шар и он как будто...

Необработанное исключение типа "System.ArgumentException" в System.Drawing.dll
Пишу приложение для работы с Графами (по учёбе). Есть Панель, в которой я рисую. Заполняю практически всю область белым квадратом. ...

Необработанное исключение типа "System.ArgumentException" в System.Drawing.dll
Доброго времени суток. Имеется проект на C# & Windows Forms. В коде основной формы имеется публичный класс Global_Data с публичными...

Необработанное исключение типа "System.IO.FileNotFoundException" в System.Drawing.dll
Пытаюсь добавить картинку в форму через код. Пользуюсь строчкой: pictureBox1.Image = Image.FromFile("C:\\nVuaQfAxU0E.jpg"); ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru