none
помогите кто чем может RRS feed

  • Вопрос

  • Всем привет! Меня зовут Андрей, я учусь програмировать на C#(на твердую 4).Я работаю над научным проектом - пишу игру на C#. У меня к вам вопрос: представте у вас есть форма(Windows Forms) на ней вместо фона - картинка, поверх формы есть Picture Box1 с картинкой(Image), еще поверх Picture Box1 есть маленький Picture Box2 тоже с картинкой(картинка с форматом gif(но не анимация,а например кружочек а поверх него прозрачный фон - делал через Fotoshop)) на Picture Box2 в свойстве Back Color в закладке Web стоит Transparent(прозрачный фон). Когда запускаю проект сзади кружочка фон самой первой формы(ее картинки) а я хочу чтобы был фон Picture Box1 . Помогите скорее плиззззззз!
    • Перемещено Tagore Bandlamudi 2 октября 2010 г. 22:04 MSDN Forums consolidation (От:Разработка Windows-приложений)
    9 октября 2009 г. 10:09

Ответы

  • в pictureBox не поддерживаются изображения с прозрачной областью. Возможно реализовать только с использованием события Paint. При наложении пиккчербоксов происходит наложение контролов, добавьте строку
    pictureBox2.Parent = pictureBox1;
    • Предложено в качестве ответа Dmitry_vl 9 октября 2009 г. 14:28
    • Помечено в качестве ответа Letos07 13 октября 2009 г. 9:25
    9 октября 2009 г. 14:08
  • спс. за ответ! Еще вопрос вот у меня такой код который рисует  2 еллипси
    System.Drawing.SolidBrush brush1 = new System.Drawing.SolidBrush(System.Drawing.Color.Red);
                        System.Drawing.Graphics formGraphics = this.CreateGraphics();
                        formGraphics.FillEllipse(brush1, new System.Drawing.Rectangle(x , y  ,16,16));
                        formGraphics.FillEllipse(brush1, new System.Drawing.Rectangle(x , y + 58, 16, 16));
                        brush1.Dispose();
                        formGraphics.Dispose();
    я пробую их рисовать на пиккчербоксе а C# их рисует на форме поза пиккчербокса
    Скажи плиз что надо сделать?
    Если использовать графикс то можно рисовать битмэп:
               
                System.Drawing.SolidBrush brush1 = new System.Drawing.SolidBrush(System.Drawing.Color.Red);
                Bitmap bmpBack = new Bitmap(100, 100);    
                Bitmap bmpFront = new Bitmap(100, 100);    
                Graphics grBack = Graphics.FromImage(btmBack);
                Graphics grFront = Graphics.FromImage(btmFront); 
                grBack.FillEllipse(brush1, new System.Drawing.Rectangle(x, y, 16, 16));
                grBack.FillEllipse(brush1, new System.Drawing.Rectangle(x, y + 58, 16, 16));
               
                pictureBox1.Image = bmpFront;
                pictureBox1.BackgroundImage = bmpBack;
                brush1.Dispose();
                grBack.Dispose();

    Или опять же вариант использовать событие Paint и прорисовывать методом Update().
    • Предложено в качестве ответа I.Vorontsov 13 октября 2009 г. 10:19
    • Помечено в качестве ответа I.Vorontsov 22 октября 2009 г. 12:21
    13 октября 2009 г. 10:19

Все ответы

  • в pictureBox не поддерживаются изображения с прозрачной областью. Возможно реализовать только с использованием события Paint. При наложении пиккчербоксов происходит наложение контролов, добавьте строку
    pictureBox2.Parent = pictureBox1;
    • Предложено в качестве ответа Dmitry_vl 9 октября 2009 г. 14:28
    • Помечено в качестве ответа Letos07 13 октября 2009 г. 9:25
    9 октября 2009 г. 14:08
  • спс. за ответ! Еще вопрос вот у меня такой код который рисует  2 еллипси
    System.Drawing.SolidBrush brush1 = new System.Drawing.SolidBrush(System.Drawing.Color.Red);
                        System.Drawing.Graphics formGraphics = this.CreateGraphics();
                        formGraphics.FillEllipse(brush1, new System.Drawing.Rectangle(x , y  ,16,16));
                        formGraphics.FillEllipse(brush1, new System.Drawing.Rectangle(x , y + 58, 16, 16));
                        brush1.Dispose();
                        formGraphics.Dispose();
    я пробую их рисовать на пиккчербоксе а C# их рисует на форме поза пиккчербокса
    Скажи плиз что надо сделать?
    13 октября 2009 г. 9:43
  • спс. за ответ! Еще вопрос вот у меня такой код который рисует  2 еллипси
    System.Drawing.SolidBrush brush1 = new System.Drawing.SolidBrush(System.Drawing.Color.Red);
                        System.Drawing.Graphics formGraphics = this.CreateGraphics();
                        formGraphics.FillEllipse(brush1, new System.Drawing.Rectangle(x , y  ,16,16));
                        formGraphics.FillEllipse(brush1, new System.Drawing.Rectangle(x , y + 58, 16, 16));
                        brush1.Dispose();
                        formGraphics.Dispose();
    я пробую их рисовать на пиккчербоксе а C# их рисует на форме поза пиккчербокса
    Скажи плиз что надо сделать?
    Если использовать графикс то можно рисовать битмэп:
               
                System.Drawing.SolidBrush brush1 = new System.Drawing.SolidBrush(System.Drawing.Color.Red);
                Bitmap bmpBack = new Bitmap(100, 100);    
                Bitmap bmpFront = new Bitmap(100, 100);    
                Graphics grBack = Graphics.FromImage(btmBack);
                Graphics grFront = Graphics.FromImage(btmFront); 
                grBack.FillEllipse(brush1, new System.Drawing.Rectangle(x, y, 16, 16));
                grBack.FillEllipse(brush1, new System.Drawing.Rectangle(x, y + 58, 16, 16));
               
                pictureBox1.Image = bmpFront;
                pictureBox1.BackgroundImage = bmpBack;
                brush1.Dispose();
                grBack.Dispose();

    Или опять же вариант использовать событие Paint и прорисовывать методом Update().
    • Предложено в качестве ответа I.Vorontsov 13 октября 2009 г. 10:19
    • Помечено в качестве ответа I.Vorontsov 22 октября 2009 г. 12:21
    13 октября 2009 г. 10:19