Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Графика и анимация в С#  (Прочитано 8580 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Wardena
Гость
« : 13-09-2006 13:48 » 

Привет, Ребята, разбираюсь тут с шарпом и натолкнулась на следующие проблемы:
1) рисую на PictureBox но не могу сделать так что картинка выводилась сразу при старте программы, пробовала писать в событии формы Load, но ничего не вышло, в общем долго мучала, скажите где прописывать надо пожалуйста.
2) рисую используя класс Graphics:
            Graphics grfx = Picturebox.CreateGraphics();
            grfx.Clear(Color.Black);
            ................
там дальше все прописано как и что рисовать, но у меня программка связана с анимацией, то есть происходит вызов этой процедуры и каждый раз картинка перерисовывается, всявязи с этим появляется вопрос о том как убрать мерцание, пробовала создавать массив типо PictureBox[] pages = new PictureBox[2];
и в цикле писать так Picturebox = pages[page]; где page меняется от 0 до 1 при каждой перерисовке, получаю пустой экран... скажите пожалуйста как надо...
3) скажем имею нарисованую картинку, нажимаю Alt+TAB то есть перевожу на рдугое окно, потом созваращаюсь в окно с программой и там все стерлатЬ, я дельфи я использовала событие OnPaint а тут событие Paint вообще непонятно как работает... вот...
Help Me Plz  Здесь была моя ладья...
Записан
dark_n
Гость
« Ответ #1 : 14-09-2006 01:32 » 

2)иногда помогает двойная буферизация
public Form1()
      {
         SetStyle(ControlStyles.UserPaint, true);
         SetStyle(ControlStyles.AllPaintingInWmPaint, true);
         SetStyle(ControlStyles.DoubleBuffer, true);
...
}
Но вроде это для формы
есть ещё пример
using System;
using System.Drawing;
using System.Drawing.Imaging;
using System.Drawing.Drawing2D;
using System.Windows.Forms;

public class Demo : System.Windows.Forms.Form
{   
    private int framesPerSecondCount;
    private int curFrame;
    private Image img;
    private System.Timers.Timer aTimer;

    public Demo()
    {
        curFrame=0;
        img=new Bitmap("Batterfly.gif");
        SetStyle(ControlStyles.UserPaint, true);
        SetStyle(ControlStyles.AllPaintingInWmPaint, true);
        SetStyle(ControlStyles.DoubleBuffer, true);

        this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
        this.ClientSize = new System.Drawing.Size(448, 342);
        this.Name = "Demo";
        this.Text = "Animated GIF in WinForms";
        this.Paint += new System.Windows.Forms.PaintEventHandler(this.Demo_Paint);
        aTimer = new System.Timers.Timer();
        aTimer.Elapsed+=new System.Timers.ElapsedEventHandler(Timer_Elapsed);
        aTimer.Interval=1000;
        aTimer.Enabled=true;       
    }

    static void Main()
    {
        Application.Run(new Demo());
    }

    private void Demo_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
    {
        Graphics g=e.Graphics;
        int frames=img.GetFrameCount(FrameDimension.Time);
        curFrame++;
        framesPerSecondCount++;
        if(curFrame>=frames) curFrame=0;
        img.SelectActiveFrame(FrameDimension.Time, curFrame);
        g.DrawImage(img, this.ClientRectangle);
        Invalidate();
    }

    private void Timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
    {
        this.Text="Animated GIF in WinForms - "+framesPerSecondCount+" FPS";
        framesPerSecondCount=0;
    }
}
Записан
dark_n
Гость
« Ответ #2 : 14-09-2006 01:42 » 

1)
Image img=new Bitmap("кемер_урез.jpg");
         pictureBox1.Image=img;
Записан
dark_n
Гость
« Ответ #3 : 14-09-2006 01:44 » 

забыл добавить  pictureBox1.Invalidate()           
  Улыбаюсь
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines