Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Программа и интерфейс
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 12.09.2011, 11:10
Lookas007 Lookas007 вне форума
Прохожий
 
Регистрация: 25.07.2011
Сообщения: 12
Репутация: 10
По умолчанию убрать фон загруженной картинки в TcxImage

Есть Image.Style.Color:=clGray(серый)
загружаю картинку и получаю в серой клетке картинка на белом фоне
Как убрать белый фон?

вариант1
Image.Picture.Bitmap.TransparentColour:=clWhite;
убирает картинку бесследно(остается серая клеть)

вариант2(через з)
for k:=1 to Image.Picture.Width do
for i:=1 to Image.Picture.height do
if Image.Picture.Bitmap.Canvas.Pixels[k,i]=clWindow then
Image.Picture.Bitmap.Canvas.Pixels[k,i]:=clGray;
дает такой же результат

Пожалуйста, подскажие не сложный выход!
Ответить с цитированием
  #2  
Старый 12.09.2011, 11:35
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

А пробовали?
Код:
Properties.GraphicTransparency := gtTransparent
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #3  
Старый 17.09.2011, 11:58
Lookas007 Lookas007 вне форума
Прохожий
 
Регистрация: 25.07.2011
Сообщения: 12
Репутация: 10
По умолчанию

Пробывал. Результат неудовлетворительный(http://www.fayloobmennik.net/981712)

Последний раз редактировалось Lookas007, 17.09.2011 в 12:25.
Ответить с цитированием
  #4  
Старый 17.09.2011, 12:08
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

За цвет назначаемый прозрачным отвечает обычно левый верхний пиксель картинки. Если у вас фон не однотонно белый, или левый верхний пиксель не белый, то и прозрачность автоматом не вычисляется. Загрузите в графический редактор картинку и проверьте одинаковы ли цвета у ключевого пикселя и фона картинки.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #5  
Старый 17.09.2011, 13:38
Lookas007 Lookas007 вне форума
Прохожий
 
Регистрация: 25.07.2011
Сообщения: 12
Репутация: 10
По умолчанию

Навел левый верхний угол(несколько пикселей включая самый левый и верхний) белым цветом в пейнте(хотя он и весь фон каринки и так белые)


constructor TPole.Create(k, i, raz:integer;AOwner : TComponent);
begin

Image:=TcxImage.Create(nil);
.......
Image.Style.Color:=clGray;
end;



procedure TDoska.PosBeg;//расставляем фигурки
var k,i:integer;
begin
Image.Picture.LoadFromFile('Kon.jpg');
with Image.Picture do
begin
Bitmap.TransparentColor:= Bitmap.Canvas.Pixels[1,1];
end;
end;

клеть остается пустой.
Если
//Bitmap.TransparentColor:= Bitmap.Canvas.Pixels[1,1];
вырисовывается в серой клетке картинка фигурки на белом фоне(как в предыдущей ссылке)
Ответить с цитированием
  #6  
Старый 17.09.2011, 13:45
Lookas007 Lookas007 вне форума
Прохожий
 
Регистрация: 25.07.2011
Сообщения: 12
Репутация: 10
По умолчанию

пирчем если сделать
Image.Properties.GraphicTransparency := gtTransparent;
Image.Picture.Bitmap.Transparent:=false;
for k:=1 to Image.Picture.Width do
for i:=1 to Image.Picture.height do
Image.Picture.Bitmap.Canvas.Pixels[k,i]:=clWhite;
то клеть остается цвета clGray
Ответить с цитированием
  #7  
Старый 17.09.2011, 14:00
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

Ладно, прикрепите сюда одну картинку. Попробую добится нужного вам эффекта
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #8  
Старый 17.09.2011, 14:22
Lookas007 Lookas007 вне форума
Прохожий
 
Регистрация: 25.07.2011
Сообщения: 12
Репутация: 10
По умолчанию

http://www.fayloobmennik.net/981928 картинка
http://www.fayloobmennik.net/981930 исходник(если понадобится)
в нем динамически создаются поля в которые потом загружается картинки
Ответить с цитированием
  #9  
Старый 17.09.2011, 15:06
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

Не удалось мне тоже сделать ничего с исходной вашей картинкой. Не хочет он ни Jpeg ни Png выводить с прозрачным фоном, но если идти по классической схеме, то все нормально. Итак вот что нужно сделать:
Открыть картинку, заменить белый цвет фона на малиновый это в RGB будет 255,0,255. Затем сохранить в формате Bmp. Вот в таком варианте будет вам прозрачность.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #10  
Старый 17.09.2011, 15:20
Pyro Pyro вне форума
Так проходящий
 
Регистрация: 18.07.2011
Сообщения: 805
Версия Delphi: 7Lite
Репутация: 6063
По умолчанию

можно попробовать так
PHP код:
function Fon(cTColor): Boolean;
begin
  result 
:= GetRValue(c)*GetGValue(c)*GetBValue(c) > 200*220*220;
end;

procedure TForm1.Button1Click(SenderTObject);
var
  
ijinteger;
begin
  
if not OpenDialog1.Execute then exit;
  
Image1.Picture.LoadFromFile(OpenDialog1.FileName);
  
with Image1.Picture do
    for 
:= 0 to Bitmap.Width do
      for 
:= 0 to Bitmap.Height do
        if 
Fon(Bitmap.Canvas.Pixels[ij]) then
          Bitmap
.Canvas.Pixels[ij] := clgreen;
end
там где 200*220*220 можно подбирать
(пересохранить в bmp естественно)
Ответить с цитированием
  #11  
Старый 17.09.2011, 21:16
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Тяжеловато что либо проверить с таким исходным кодом, а точнее невозможно.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #12  
Старый 18.09.2011, 23:50
Lookas007 Lookas007 вне форума
Прохожий
 
Регистрация: 25.07.2011
Сообщения: 12
Репутация: 10
По умолчанию

После конвертации в bmp проблема не решилась.
После
Image.Picture.Bitmap.TransparentColor:= Bitmap.Canvas.Pixels[1,1];

http://www.fayloobmennik.net/981712(белый фон остался)
Ответить с цитированием
  #13  
Старый 18.09.2011, 23:55
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Читай выше.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #14  
Старый 19.09.2011, 00:03
Lookas007 Lookas007 вне форума
Прохожий
 
Регистрация: 25.07.2011
Сообщения: 12
Репутация: 10
По умолчанию

А решение "Pyro" очень помогло(правда границы рисунка получились обгрызанными). Спасиба!
Ответить с цитированием
  #15  
Старый 19.09.2011, 00:07
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Это так называемое решение через з...цу, да не убьёт меня, надеюсь Admin.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 19:24.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter