Главная страница
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.016 c
14-24682
rrk
2003-08-18 13:52
2003.09.08
Новый дизайн. Зацените!


8-24557
Lamot'
2003-05-08 03:19
2003.09.08
Подобие бинарных рисунков...


6-24591
alxsandri
2003-06-26 15:23
2003.09.08
как ис своей программы просмотреть список расшареных ресурсов


1-24441
Ghost_
2003-08-25 16:54
2003.09.08
Формат ячейки в Екселе


6-24576
B0B@H
2003-07-02 11:05
2003.09.08
Размер страницы