Форум: "Media";
Текущий архив: 2003.09.08;
Скачать: [xml.tar.bz2];
Внизрисование на Canvas не повреждая фон Найти похожие ветки
← →
_Alex_ (2003-05-06 20:48) [0]Рисую через Canvas на Image простый фигуры, точки
линии все это иногда движется и т.д.
Как двигать их не стирая фон, на заднем фоне рисунок.
Знаю что связанно что-то c Pen.Mode:=mbXor,
подскажите.
← →
pasha676 (2003-05-07 09:21) [1]Рисуешь по месту где надо линию. Рисуешь второй раз по тому же месту - стираешь линию.
← →
_Alex_ (2003-05-07 15:55) [2]при этом цвета инвертируются
а мне этого не надо
← →
MBo (2003-05-07 16:48) [3]тогда сохраняй фон и перерисовывай его
← →
alexander_o (2003-05-08 11:09) [4]столкнулся с подобной проблемой и решил это так:
я использовал для этого TPaintBox сверху, TImage с картинкой внизу - в TImage кладу картинку, которая мне нужна в данный момент, а на TPaintBox рисую что хочу
← →
_Alex_ (2003-05-08 20:07) [5]спасибо за ответы попробую
← →
_Alex_ (2003-05-09 10:43) [6]Поставил сверху PaintBox, но если у него включаешь режими mbXor,
получается такая же ситуация, я рисую около 300-500 точек на рисунке
752*458, когда они начинают пролетать по фону, цвет инвертируется.
Сделал таким образом:
запоминаю цвет под точкой(на Image1) и стираю ее этим цветом (на PaintBox1)
c[i]:=Image1.Canvas.Pixels[x[i],y[i]];
PutPixel(x[i],y[i],clRed{[i]});
//...
( x[i],y[i],c[i]) Поставил сверху PaintBox, но если у него включаешь режими mbXor,
получается такая же ситуация, я рисую около 300-500 точек на рисунке
752*458, когда они начинают пролетать по фону, цвет инвертируется.
Сделал таким образом:
запоминаю цвет под точкой(на Image1) и стираю ее этим цветом (на PaintBox1)
c[i]:=Image1.Canvas.Pixels[x[i],y[i]];
PutPixel(x[i],y[i],clRed{[i]});
//...
PutPixel(x[i],y[i],c[i])
//
procedure PutPixel(x_c,y_c,c_c: integer);
begin
Form1.PaintBox1.Canvas.Pen.Color:=c_c;
Form1.PaintBox1.Canvas.Rectangle(x_c,y_c,x_c+1,y_c+1);
end;
но точки полючаются мелковаты
а если
Form1.PaintBox1.Canvas.Rectangle(x_c,y_c,x_c+2,y_c+2);
то точка будет занимать 4 пиксела и придеться запоминать уже 4 цвета для каждой точки,
Как можно обойти эту ситуацию?
← →
_Alex_ (2003-05-09 12:43) [7]Еще одна проблема, точки рисованые на PaintBox стираются если окно свернуть, а затем востановить
← →
alexander_o (2003-05-12 16:23) [8]я использую фиксированное количество объектов на PaintBox и перерисовываю их в нужном случае (FormActivate, etc)
← →
Trapper (2003-05-12 17:32) [9]Попробуй использовать дополнительную картинку TBitmap. Перед запуском приложения загрузи туда твою картинку. А в цикле прорисовки перед самой прорисовкой сделай Image.Assign(bitmap). После этого рисуй все, что тебе угодно. Фон останется на месте.
Страницы: 1 вся ветка
Форум: "Media";
Текущий архив: 2003.09.08;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.014 c