Всем доброго времени суток.
У меня возникла проблема с рисованием на форме:
если рисую в том же методе, где и получил объект типа 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