Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Результаты опроса: Каким способом отобразить такой эффект лучше?
OpenGL 1 100.00%
Другой 0 0%
Голосовавшие: 1. Вы ещё не голосовали в этом опросе

Ответ
 
Опции темы Поиск в этой теме
Старый 21.08.2011, 02:25   #1
W0LF
Форумчанин
 
Аватар для W0LF
 
Регистрация: 28.03.2008
Сообщений: 940
Вопрос Реализация выделения

Здравствуйте, помогите советами как можно реализовать такое:


Подробней:
рисуется прямоугольник, вокруг которого находиться полупрозрачный фон n-ого цвета, с возможностью, собственно, наблюдать элементы под этой "полупрозрачностью".

Последний раз редактировалось W0LF; 21.08.2011 в 02:27.
W0LF вне форума Ответить с цитированием
Старый 21.08.2011, 02:49   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

можно в эту сторону глянуть.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 21.08.2011, 11:54   #3
W0LF
Форумчанин
 
Аватар для W0LF
 
Регистрация: 28.03.2008
Сообщений: 940
По умолчанию

Как-то не очень помогло.
W0LF вне форума Ответить с цитированием
Старый 21.08.2011, 12:39   #4
lux16
Форумчанин
 
Аватар для lux16
 
Регистрация: 11.02.2009
Сообщений: 305
По умолчанию

Я лично ничего не понял, если можно дай посмотреть в ЕХЕ
Хочу быть лучшим, но пока что я только обычный =(
lux16 вне форума Ответить с цитированием
Старый 21.08.2011, 12:41   #5
W0LF
Форумчанин
 
Аватар для W0LF
 
Регистрация: 28.03.2008
Сообщений: 940
По умолчанию

Было бы в EXE - выложил бы, рисовал в Paint.Net. Нужно на форме (Image) нарисовать прямоугольник (как выделение в Windows файлов) и вокруг прямоугольника затемнение (в Windows 7, например, оно внутри выделения, а мне нужно, что бы не выделенная часть затемнялась (синий фон на скрине)) сделать.
W0LF вне форума Ответить с цитированием
Старый 21.08.2011, 12:43   #6
lux16
Форумчанин
 
Аватар для lux16
 
Регистрация: 11.02.2009
Сообщений: 305
По умолчанию

То есть когда мышкой выделяешь, то чтобы все внутри белое, а снаружи полузатенным ?!
Хочу быть лучшим, но пока что я только обычный =(
lux16 вне форума Ответить с цитированием
Старый 21.08.2011, 12:46   #7
W0LF
Форумчанин
 
Аватар для W0LF
 
Регистрация: 28.03.2008
Сообщений: 940
По умолчанию

Все правильно. Отрисовка самого прямоугольника - не проблема, на том же Canvas, но вот полупрозрачное затемнение вокруг....
W0LF вне форума Ответить с цитированием
Старый 21.08.2011, 12:48   #8
lux16
Форумчанин
 
Аватар для lux16
 
Регистрация: 11.02.2009
Сообщений: 305
По умолчанию

http://forum.sources.ru/index.php?showtopic=46971
Копни здесь, а вообще зачем тебе это ?
Хочу быть лучшим, но пока что я только обычный =(
lux16 вне форума Ответить с цитированием
Старый 21.08.2011, 13:27   #9
W0LF
Форумчанин
 
Аватар для W0LF
 
Регистрация: 28.03.2008
Сообщений: 940
По умолчанию

Вот нашел такого плана код:
Код:
procedure Alpha;
var
  bmp: TBitMap;
  Blend: TBlendFunction;
begin
  bmp := TBitMap.Create;
  bmp.Width := 150; //!!!
  bmp.Height := 150; //!!!
  bmp.Canvas.Brush.Color := clBlue;
  bmp.Canvas.FillRect(bmp.Canvas.ClipRect);
  Image1.Picture.Bitmap.PixelFormat := pf32bit;
  bmp.PixelFormat := pf32bit;
  Blend.BlendOp := AC_SRC_OVER;
  Blend.BlendFlags := 0;
  Blend.SourceConstantAlpha := 100;
  Blend.AlphaFormat := AC_SRC_ALPHA;
  if Windows.AlphaBlend(Image1.Picture.Bitmap.Canvas.Handle, 0, 0, Image1.Picture.Bitmap.Width, Image1.Picture.Bitmap.Height,
                        bmp.Canvas.Handle, 0, 0, bmp.Width, bmp.Height, Blend) then
    Image1.Canvas.Draw(0, 0, Image1.Picture.Bitmap)
  else ShowMessage(IntToStr(GetLastError));
  bmp.Free;
end;
Он рисует полупрозрачный bmp на Image1, вопрос в следующем: почему если bmp имеет размер 150х150, он красит синим весь Image1, а не только участок 150x150 на координате 0,0 ?
W0LF вне форума Ответить с цитированием
Старый 21.08.2011, 15:53   #10
xrob
Форумчанин
 
Регистрация: 18.10.2010
Сообщений: 419
По умолчанию

если не пугает небольшой интим с компонентом TPNGObject,
могу подробно рассказать как реализовать то что вам нужно
xrob вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Выделения повторений GrayBy Microsoft Office Excel 5 21.11.2010 01:11
выделения peq Microsoft Office Excel 2 29.12.2009 10:31
Отключение выделения Gromsky HTML и CSS 5 01.12.2009 13:31
команда выделения текста Gunet Общие вопросы Delphi 3 19.11.2009 18:53
касательно выделения столбцов Volodymyr Microsoft Office Excel 2 20.07.2008 11:47