GDI+ проблема
От: pan_KOST Россия  
Дата: 18.01.09 14:28
Оценка:
Всем доброго времени суток.
У меня возникла проблема с рисованием на форме:
если рисую в том же методе, где и получил объект типа Graphics, то всё отлично прорисовывается на моем объекте, если нет, то данные рисования не приходят.
//Form1.cs:

...
LSystem system;// глбоальная еременная в классе
...
private void нарисоватьToolStripMenuItem_Click(object sender, EventArgs e)
{
ThreadPool.QueueUserWorkItem(starting);
}
private void starting(object stateInfo)
{
Bitmap flag = new Bitmap(pbPaint.Width, pbPaint.Height);
Graphics flagGraphics = Graphics.FromImage(flag);
flagGraphics.DrawEllipse(new Pen(Color.Blue), 100, 100, 40, 40);
//эллипс рисуется ,а новые данные уже нет.
system.Paint(ref flagGraphics);
}

//LSystem.cs:

public void Paint(ref Graphics graphics)
{
Stack<PointF> stack = new Stack<PointF>();
Stack<double> angle_stack = new Stack<double>();
double alpha=0;
PaintLSystem(ref graphics, axiom, 1,ref start_point, ref stack, ref angle_stack, ref alpha);

}
private Graphics PaintLSystem(ref Graphics graphics, string program, int order,ref PointF curr_point,ref Stack<PointF> stack,ref Stack<double> stack_angle,ref double alpha)
{
//далее код не имеет значения, но регулярно вызывается следующий метод:
graphics.DrawLine(new Pen(Color.Aqua), curr_point, end_point);
//и рексурсивно эта же функция:
graphics=PaintLSystem(ref graphics, Parse(program[i].ToString()), order + 1, ref curr_point, ref stack, ref stack_angle, ref alpha);
}


в принципе вот она вся и проблема...
до этого вызываел БЕЗ дополнительного потока — всё рисовалось, но оченьь плохо (всё-время терялась часть изображения).
сама функцция формирования изображения выполняется более 10-15 секунд, и именно поэтому была выпихнута в отдельный поток.

При сохранении Bitmap flag ПОСЛЕ вызова моей функции рисования сохраняется ТОЛЬКО эллипс, но не сформированная мною картинка.
В чем может быть проблема?

18.01.09 17:29: Перенесено модератором из '.NET' — TK
.net c# gdi+ winforms
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.