Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > Общие вопросы .NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.05.2009, 23:10   #1
Natok
Пользователь
 
Аватар для Natok
 
Регистрация: 17.05.2009
Сообщений: 85
Смущение C#: перерисовка форми

как сделать вызов очистки форми кнопкой?
то есть как выглядит ф-ия, которая стирает все рисунки, сделанные до етого.
после Invalidate() ничего больше не рисуется...
Natok вне форума Ответить с цитированием
Старый 26.05.2009, 23:31   #2
SunKnight
Участник клуба Подтвердите свой е-майл
 
Аватар для SunKnight
 
Регистрация: 14.12.2007
Сообщений: 1,434
По умолчанию

Явной функции для очистки формы нет, нужно для начала создать канву на которой будем рисовать и очищать.
Код:
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 TempCSharp
{
    public partial class Form1 : Form
    {
        Graphics Canvas;
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            Canvas.Clear(this.BackColor);
        }

        private void button2_Click(object sender, EventArgs e)
        {
            var myPen = new Pen(Color.Red);            
            Canvas.DrawLine(myPen, 10, 10, 500, 500);
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            Canvas = this.CreateGraphics();
        }
    }
}
Проповедую design patterns, верую в MVC, доверяю eXtrime programming.
SunKnight вне форума Ответить с цитированием
Старый 27.05.2009, 00:23   #3
Natok
Пользователь
 
Аватар для Natok
 
Регистрация: 17.05.2009
Сообщений: 85
По умолчанию

очень Вам благодарна! работает=)))

PHP код:
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 
WindowsFormsApplication4
{
    public 
partial class Form1 Form
    
{
        
Graphics Canvas;
        
        public 
Form1()
        {
            
            
InitializeComponent();
            
Canvas this.CreateGraphics();
        }

        private 
void button1_Click(object senderEventArgs e)
        {
            var 
myPen = new Pen(Color.Red);
            
Canvas.DrawLine(myPen1010500500);


        }
        private 
void button2_Click(object senderEventArgs e)
        {
            
Canvas.Clear(this.BackColor);

        }
        


    }

Вот только без Form1_Load, с етой ф-ией оно не работало. Надо еще разобратся с етими Load и Invalidate()
Natok вне форума Ответить с цитированием
Старый 02.06.2009, 10:54   #4
mkolmogorov
 
Регистрация: 02.06.2009
Сообщений: 4
По умолчанию

Скажите пожалуйста, а если процедура рисования находится в другом классе, и рисовать нужно на пикчербоксе движущиеся объекты, как тогда быть? У меня отрисовка идет все медленнее, медленнее.
Прикрепляю пример.
Подскажите, в чем проблема?
Вложения
Тип файла: rar GraphicApp.rar (460.4 Кб, 29 просмотров)
mkolmogorov вне форума Ответить с цитированием
Старый 02.06.2009, 17:34   #5
SunKnight
Участник клуба Подтвердите свой е-майл
 
Аватар для SunKnight
 
Регистрация: 14.12.2007
Сообщений: 1,434
По умолчанию

По факту

Код:
private void button1_Click(object sender, EventArgs e)
        {
            Tank t = new Tank();
            pictureBox1.Paint += new PaintEventHandler(t.drawTank);

            for (int i = 10; i < pictureBox1.Size.Width - 100; i++)
            {
                t.SetX(i);
                pictureBox1.Paint += new PaintEventHandler(t.drawTank);//непойму зачем, нужно убрать, так как уже один раз прикрутили к событию 
                pictureBox1.Refresh();
            }
        }
Вообще код неудобный и очень стремный.
Проповедую design patterns, верую в MVC, доверяю eXtrime programming.
SunKnight вне форума Ответить с цитированием
Старый 02.06.2009, 18:35   #6
mkolmogorov
 
Регистрация: 02.06.2009
Сообщений: 4
По умолчанию

Согласен, очень стремный. О_о У меня вот так заработало без тормозов:

Код:
private void button1_Click(object sender, EventArgs e)
        {
            Tank t = new Tank();
            pictureBox1.Paint += t.drawTank;

            for (int i = 10; i < pictureBox1.Size.Width - 100; i++)
            {
                t.SetX(i);
                pictureBox1.Refresh();
            }
            pictureBox1.Paint -= t.drawTank;
            pictureBox1.Refresh();
        }
Возможно ли еще какое-либо улучшение?
mkolmogorov вне форума Ответить с цитированием
Старый 02.06.2009, 19:01   #7
SunKnight
Участник клуба Подтвердите свой е-майл
 
Аватар для SunKnight
 
Регистрация: 14.12.2007
Сообщений: 1,434
По умолчанию

Цитата:
Возможно ли еще какое-либо улучшение?
Shift+Del

А вообще, что это за прога такая. 0_о История боевых действий на территории Украины?

---------
К стати, на форуме новая тема = новый топик.
Проповедую design patterns, верую в MVC, доверяю eXtrime programming.
SunKnight вне форума Ответить с цитированием
Старый 02.06.2009, 19:49   #8
mkolmogorov
 
Регистрация: 02.06.2009
Сообщений: 4
По умолчанию

Это эмулятор танкового сражения. Есть орудия, самоходные орудия и танки. У орудий темп стрельбы наибольший, у танков броня наибольшая. Стрельба ведется по ближайшей цели. Некоторые самоходки могут объезжать друг друга. Танки могут стрелять даже по целям сзади(вкруговую). Мощность выстрела задается случайно. Но наносимый урон зависит от расстояния.

Вообще я ее уже давно закончил, только вот ее хватало на один бой. Раз такая тема появилась я решил выяснить как сделать без тормозов
Вот она, если интересно.
ЗЫ если надо, могу исходник кинуть
Вложения
Тип файла: rar BattleOfProkhorovka.rar (439.4 Кб, 48 просмотров)
mkolmogorov вне форума Ответить с цитированием
Старый 02.06.2009, 19:58   #9
SunKnight
Участник клуба Подтвердите свой е-майл
 
Аватар для SunKnight
 
Регистрация: 14.12.2007
Сообщений: 1,434
По умолчанию

Чета я самоходок не увидел.

А ваще прикольно, тока нет маневренности.

Если будет время попробую свой аналог смастерить. Вот пусть сессия закончитсо..
Проповедую design patterns, верую в MVC, доверяю eXtrime programming.
SunKnight вне форума Ответить с цитированием
Старый 02.06.2009, 20:03   #10
mkolmogorov
 
Регистрация: 02.06.2009
Сообщений: 4
По умолчанию

ты BattleOfProkhorovka.rar скачал? есть они там, присмотрись - они на танки сильно смахивают)) можешь только с самоходками позапускать
mkolmogorov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
замена заголовки форми bmb_66 Общие вопросы Delphi 11 28.09.2009 08:12
перерисовка канвы Bayazet Общие вопросы Delphi 14 27.01.2009 16:02
Перерисовка на Image SERG1980 Мультимедиа в Delphi 9 09.04.2008 10:24
замена загаловки форми ?????? bmb_66 Общие вопросы Delphi 7 10.01.2008 10:14
Перерисовка формы satana Общие вопросы Delphi 4 18.09.2007 19:42