Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Разработка Windows Forms > picturebox и graphik.


Автор: lankin 1.8.2007, 06:36
В общем такое дело: оторажается график. B pictureBox.Image - просто картинка сетки графика. Сам грфик рисуется по точкам и далее рисуетсялиния их соединяющяя.

Код

foreach (DataRow dr in ds.Tables[0].Rows)
{
X1 = (int)dr["X1"];
                        X2 = (int)dr["X2"];
                        Y1 = (int)dr["Y1"];
                        Y2 = (int)dr["Y2"];
                        Bitmap bm = new Bitmap(pictureBoxGraphik.Image);
                        bm.SetPixel(X1, Y1, Color.Red);
                        bm.SetPixel(X1, Y1, Color.Red);
                        p1 = new Point(X1, Y1);
                        p2 = new Point(X2, Y2);
                        Graphic g1 = pictureBoxGraphik.CreateGraphics();
                        g1.DrawLine(new Pen(Color.Red), p1, p2);
                        pictureBoxGraphik.Image = (Image)bm; 
}

В итоге все хорошо, но тока линия, соединяющая соседние точки - каждый раз перерисовывается, т.е. у меня каждый раз только одна линия между 2-мя точками (потом между следующими двумя и т.д.). А мне нужно, чтобы рисовался график от полностью. 
Вопрос: каким образом можно моединить эту линию с Image, или невозможно?
Как я понял это разные вещи - Image и объект Graphic и линия рисуется не в Bitmap а как бы в отдельном слое чтоли...

Автор: Naum 1.8.2007, 08:44
Цитата(lankin @  1.8.2007,  07:36 Найти цитируемый пост)
Bitmap bm = new Bitmap(pictureBoxGraphik.Image);

Ты же каждый раз создаешь новый битмап. Вынеси эти строки из цикла.
Цитата(lankin @  1.8.2007,  07:36 Найти цитируемый пост)
Graphic g1 = pictureBoxGraphik.CreateGraphics();

Вместо этого должно быть что-то типа
Код

Graphics g1 = Graphics.FromImage(bm);


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)