Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "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
3-24355
Subdigger
2003-08-16 03:06
2003.09.08
security


1-24514
snake1977
2003-08-27 10:23
2003.09.08
свой компонент


3-24352
WASYA
2003-08-15 12:37
2003.09.08
Избитый вопрос (наверное)


6-24609
gedd
2003-06-18 08:10
2003.09.08
Перекодировка темы письма в POP3


3-24361
Bes
2003-08-17 05:18
2003.09.08
Паралельная работа с БД...





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский