Прозрачность Tfrxpictureview

vitaly_lvitaly_l Винница, Украина
отредактировано 16:24 Раздел: FastReport 4.0
Собственно: как сделать прозрачным фон картинки?
Например, у того же .ico есть прозрачный фон. Но в отчете залито белым.

И еще попутный вопрос разработчикам: ПОЧЕМУ НЕТ ПОДДЕРЖКИ GIF

Комментарии

  • vitaly_lvitaly_l Винница, Украина
    отредактировано October 2007
    Дополнительный поиск по форуму FastReport 3 показал, что прозрачность фона картинки запрашивалась :
    еще в 2005 году
    Yojik написал: »
    Помогите плиз!!!
    TfrxPictureView
    Выводит всегда белый цвет, как backgraund, а мне нужно , чтоб он был прозрачным , как быть???

    На что тогда авторы FR ответили:
    Yojik написал: »
    Надо переделывать метод DrawBitmap в frxUtils.pas. Как - не спрашивайте, не знаю...

    Печать рисунков в отчетах - это, IMHO, гораздо большая необходимость чем всякие экзотические экспорты, на какие идут анонсы новых версий.
    Такой действительно прекрасный продукт FastReport и не может делать прозрачный фон! Понимаю, что это, возможно, трудно реализовать,
    но ЭТО ОЧЕНЬ НАДО!!!
    Если рисунок прямоугольный, то и нет необходимости прозрачности. Но если на рисунке объект занимает только определенную область, например овал, круг и т.п. (и у этого рисунка есть прозрачный фон), а цвет других объектов в самом отчете должен динамически меняться - белый фон на рисунке ОЧЕНЬ ПОРТИТ весь отчет.

    Авторы! ПОЖ-СТА ДОБАВЬТЕ ВОЗМОЖНОСТЬ ПРОЗРАЧНОСТИ + БЫЛО СУПЕР, поддержка GIF (интересно, что в дизайнере GIF можно вставить, он отображается)
  • Stalker4Stalker4 123
    отредактировано 16:24
    vitaly_l написал: »
    Авторы! ПОЖ-СТА ДОБАВЬТЕ ВОЗМОЖНОСТЬ ПРОЗРАЧНОСТИ + БЫЛО СУПЕР, поддержка GIF (интересно, что в дизайнере GIF можно вставить, он отображается)
    По поводу Gif: В frxAdvPicture есть поддержка GIF (для печати и для диалоговой формы). Брать на сайте http://www.stalker4.dp.ua
    По поводу прозрачности, не уверен есть она там или нет.
  • vitaly_lvitaly_l Винница, Украина
    отредактировано 16:24
    Stalker4 написал: »
    По поводу Gif: В frxAdvPicture есть поддержка GIF (для печати и для диалоговой формы). Брать на сайте http://www.stalker4.dp.ua
    По поводу прозрачности, не уверен есть она там или нет.
    Компонент скачал, то проект сделан только под Delphi, а я работаю в C++ Builder 6. Можно было бы попробовать
    повозиться с переносом в билдер, но раз нет уверенности, пока отложу. Но все равно спасибо!
  • отредактировано 16:24
    А всего-то надо - переместить свойство Color в published и выставить ему значение clNone.
  • отредактировано January 2009
    Noskov написал: »
    А всего-то надо - переместить свойство Color в published и выставить ему значение clNone.
    Подробнее плз! Где переместить color в published?
    Допустим, есть у меня картинка в Image1 (transperent=true), нужно ее вставить в отчет, чтобы сохранить прозрачность.
    Такая попытка прозрачности не добавляет:
    Pict := frxReport1.FindObject('Picture1') as TfrxPictureView;
    if Assigned(Pict) then
    begin
    Pict.Color:=clNone;
    Pict.Picture.Bitmap.TransparentColor:=$00FFFFFF;
    Pict.Picture.Bitmap.Transparent:=true;
    Pict.Picture.Bitmap:=Image1.Picture.Bitmap;
    end;
    
    Что не так?
    И еще вопрос - как сделать в рантайм Pict.SendToBack?
  • отредактировано January 2009
    Молчание радует...
    Пришлось делать так: соединять рисунки с прозрачным фоном на невидимой панели, копировать панель в bitmap и уже bitmap вставлять в заранее подготовленную картинку за заднем плане отчета. Изврат одним словом. :)
  • Stalker4Stalker4 123
    отредактировано 16:24
    Noskov написал: »
    А всего-то надо - переместить свойство Color в published и выставить ему значение clNone.
    Добавил я в свой TfrxAdvPictureView в published св-во Color и закомментировал его в конструкторе.
    Действительно, в дизайнере и в Preview gif с прозрачным фоном отображается правильно. Но при печати прозрачный фон не работает. Надо что то меня в методе TfrxAdvPictureView.Draw, но вот что именно я не знаю. Если All может это подсказать, буду очень благодарен (и думаю не только я).
  • отредактировано 16:24
    В файле frxClass.pas:
    procedure TfrxPictureView.Draw(Canvas: TCanvas; ScaleX, ScaleY, OffsetX, OffsetY: Extended);
    var
      r: TRect;
      kx, ky: Extended;
      rgn: HRGN;
    
      procedure PrintGraphic(Canvas: TCanvas; DestRect: TRect; aGraph: TGraphic);
      begin
        frxDrawGraphic(Canvas, DestRect, aGraph, IsPrinting);
      end;
    
    begin
      BeginDraw(Canvas, ScaleX, ScaleY, OffsetX, OffsetY);
    
      with Canvas do
      begin
        if not FTransparent then DrawBackground; // <-- Поменяйте оригинал на такую строчку
        r := Rect(FX, FY, FX1, FY1);
    

    И тогда фон объекта будет прозрачным, а для картинки прозрачным цветом будет считаться пиксел в левом нижнем углу
  • Stalker4Stalker4 123
    отредактировано 16:24
    DimOsBar написал: »
    В файле frxClass.pas:
    procedure TfrxPictureView.Draw(Canvas: TCanvas; ScaleX, ScaleY, OffsetX, OffsetY: Extended);
    var
      r: TRect;
      kx, ky: Extended;
      rgn: HRGN;
    
      procedure PrintGraphic(Canvas: TCanvas; DestRect: TRect; aGraph: TGraphic);
      begin
        frxDrawGraphic(Canvas, DestRect, aGraph, IsPrinting);
      end;
    
    begin
      BeginDraw(Canvas, ScaleX, ScaleY, OffsetX, OffsetY);
    
      with Canvas do
      begin
        if not FTransparent then DrawBackground; // <-- Поменяйте оригинал на такую строчку
        r := Rect(FX, FY, FX1, FY1);
    

    И тогда фон объекта будет прозрачным, а для картинки прозрачным цветом будет считаться пиксел в левом нижнем углу

    А откуда в коде взялось свойство FTransparent ?
    В модуле frxClass.pas вообще ни у кого нет такого свойства.

Оставить комментарий

Многофункциональный текстовый редактор. Чтобы отредактировать стиль параграфа, нажмите TAB, чтобы перейти к меню абзаца. Там вы можете выбрать стиль. По умолчанию не выбран ни один стиль. Когда вы выберете текст, появится встроенное меню форматирования. Нажмите TAB, чтобы войти в него. Некоторые элементы, такие как многофункциональные вставки ссылок, картинок, индикаторов загрузки и сообщений об ошибок могут быть вставлены в редактор. Вы можете перемещаться по ним, используя стрелки внутри редактора и удалять с помощью клавиш delete или backspace.