Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.09.08;
Скачать: CL | DM;

Вниз

рисование на 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 вся ветка

Текущий архив: 2003.09.08;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.024 c
4-24739
mox
2003-07-08 11:45
2003.09.08
Почему не копируется текст edit-ов др.окна


3-24304
Sirus
2003-08-19 07:31
2003.09.08
Что лучше делать: увеличивать количество записей или ???


1-24428
Agent_03
2003-08-26 00:35
2003.09.08
Печать Landscape


9-24292
Карлсон
2002-12-15 14:53
2003.09.08
GLScene


11-24397
AlexG
2003-01-03 14:17
2003.09.08
Базы!