Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Visual C++/MFC/WTL > CPen


Автор: Nikkiforum 16.2.2006, 15:11
Как сделать так чтобы при первой прорисовке была линия, а при второй она исчезала - то есть нужно инвертирование только не знаю как его сделать

Автор: chaos 16.2.2006, 15:44
в обработчике WM_PAINT
Код

static bool fPaint = false;

if (! fPaint)
{
    fPаint = true;
    //рисуешь линию
}
else
{
    //
}

Автор: Coocky 16.2.2006, 16:04
Вы%%%%усь smile
Код

static bool fPaint = false;

if (! fPaint)
{
    fPаint = !fPаint ;
    //рисуешь линию
}
else
{
    //
}

Автор: Denn 17.2.2006, 12:00
Помоему товарищ спрашивал про режимы отображения типа SRCINVERT в CDC::StretchBlt. Я не помню как это можно сделать для линии. Советую покапаться в указанном направлении.

Автор: takedo 17.2.2006, 12:15
Nikkiforum, Да купи ты в конце концов за 200 рублей книгу: "А. Мешков, Ю.Тихомиров "Visual C++ и MFC"". Вообще больше таких вопросов и желания не возникнет задавать. Можешь поискать в электронной версии (хотя в бумаге то оно лучше), даже здесь на форуме были ссылки
Добавлено @ 12:19
ну а если книгу не покупаешь, то можешь вообще создать свой пен с разными стилями PS_SOLID, PS_DASH, и т.д. Смотри себе как они себя ведут, но в книге то это четко объяснено, не поймет только ленивый.
PS.: поищи в сети, она правда большая, мегов 20, но стоит она того.

Автор: Coocky 17.2.2006, 12:26
Цитата(Denn @ 17.2.2006, 12:00 Найти цитируемый пост)
Помоему товарищ спрашивал про режимы отображения типа SRCINVERT в CDC::StretchBlt.

Вполне возможно.Ну можно было и уточнить smile
Я где-то видел в примере, где два раза рисовалась одна линия с разными флагами ROP.
Во избежания мерцания.
Но надо поэкперементировать с флагами
Цитата

R2_BLACK  Pixel is always black.
R2_WHITE  Pixel is always white.
R2_NOP  Pixel remains unchanged.
R2_NOT  Pixel is the inverse of the screen color.
R2_COPYPEN  Pixel is the pen color.
R2_NOTCOPYPEN  Pixel is the inverse of the pen color.
R2_MERGEPENNOT  Pixel is a combination of the pen color and the inverse of the screen color (final pixel = (NOT screen pixel) OR pen).
R2_MASKPENNOT  Pixel is a combination of the colors common to both the pen and the inverse of the screen (final pixel = (NOT screen pixel) AND pen).
R2_MERGENOTPEN  Pixel is a combination of the screen color and the inverse of the pen color (final pixel = (NOT pen) OR screen pixel).
R2_MASKNOTPEN  Pixel is a combination of the colors common to both the screen and the inverse of the pen (final pixel = (NOT pen) AND screen pixel).
R2_MERGEPEN  Pixel is a combination of the pen color and the screen color (final pixel = pen OR screen pixel).
R2_NOTMERGEPEN  Pixel is the inverse of the R2_MERGEPEN color (final pixel = NOT(pen OR screen pixel)).
R2_MASKPEN  Pixel is a combination of the colors common to both the pen and the screen (final pixel = pen AND screen pixel).
R2_NOTMASKPEN  Pixel is the inverse of the R2_MASKPEN color (final pixel = NOT(pen AND screen pixel)).
R2_XORPEN  Pixel is a combination of the colors that are in the pen or in the screen, but not in both (final pixel = pen XOR screen pixel).
R2_NOTXORPEN  Pixel is the inverse of the R2_XORPEN color (final pixel = NOT(pen XOR screen pixel)).




Автор: Earnest 17.2.2006, 14:28
С одним и тем же флагом R2_NOT. Певый раз рисует, второй - стирает. Еще R2_XORPEN можно. Во втором случае цвет линии (когда она есть) зависит от цвета текущего пера, в первом - нет.

Автор: Nikkiforum 17.2.2006, 15:11
Большое всем спасибо!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)