×

Discussion Board

Results 1 to 5 of 5
  1. #1
    Registered User
    Join Date
    Apr 2009
    Location
    Russia
    Posts
    51

    Smile фон в CEikImage

    День добрый.
    Я пытаюсь вывести изображение на экран телефона. Создаю CFbsBitmap* aBitmap и через CImageDecoder згружаю в него jpg. Дальше
    iImage5->SetPicture(aBitmap); //iImage5 - это объект CEikImage
    Выводится все нормально, но если джипег по размеру меньше то фон у iImage5 будет белый. Мне же надо черный.

    Я вижу два способа решения. Первым после загрузки jpg в aBitmap (aBitmap больше по размеру чем jpg)
    aBitmap->Create( TSize( 352, 165 ),aImageDecoder->FrameInfo().iFrameDisplayMode );
    рисовать там прямоугольник слева через CFbsBitGc черного цвета. Но тут проблема в том что при выполнении этого кода jpg копируется не по центру (выравнивается по левому краю).

    Второй способ получить как-то указатель на объект CFbsBitmap в CEikImage* iImage5, который туда попадет после
    iImage5->SetPicture(aBitmap);
    Я его получил, но он статический. Изменить сам CFbsBitmap не получилось.

    Еще я нашел функции GetGc,DrawBackground, и CustomGc у CEikImage, но и нарисовать что-либо не получается (вылетает все).

    Code:
        TFileName aJPEGFile(filename);
        CImageDecoder *aImageDecoder = CImageDecoder::FileNewL(fs, aJPEGFile, CImageDecoder::EOptionAlwaysThread);
        CleanupStack::PushL(aImageDecoder);
        CFbsBitmap* aBitmap = new (ELeave) CFbsBitmap();
        aBitmap->Create( TSize( 352, 165 ),
        aImageDecoder->FrameInfo().iFrameDisplayMode );
        TRequestStatus aStatus;
        aImageDecoder->Convert(&aStatus, *aBitmap);
        User::WaitForRequest(aStatus);
        iImage5->SetPicture(aBitmap);
        CleanupStack::PopAndDestroy();


    Кто знает как мне можно помочь? Спасибо.

  2. #2
    Registered User
    Join Date
    Dec 2005
    Posts
    93

    Re: фон в CEikImage

    Quote Originally Posted by Kruil View Post
    Кто знает как мне можно помочь? Спасибо.
    Видится мне, у вас должен быть какой-то контрол, поверх которого выводится изображение. И именно в нем и делается заливка белым цветом. Нужно в нем поменять цвет заливки и всё.

  3. #3
    Registered User
    Join Date
    Apr 2009
    Location
    Russia
    Posts
    51

    Re: фон в CEikImage

    Я посмотрел вроде нет никаких контролов больше. iImage5 и есть сам контрол который в себе изображение хранит. я создал iImage5 в ui-дизайнере, и перед тем как выводиться на экран он проходит инициализацию, а потом через мою функцию копирования в него битмапы с jpg-ом.

    Один из этапов инициализации такой :

    Code:
    void mymainclass::InitializeControlsL() {
    ...
    iImage5 = new ( ELeave ) CEikImage;
    		{
    		CFbsBitmap *bitmap = new (ELeave) CFbsBitmap;
    		bitmap->Create( TSize( 1, 1), EGray2 );
    		AknIconUtils::SetSize( bitmap, TSize( 352, 165 ), EAspectRatioPreserved );
    		iImage5->SetPicture( bitmap );
    		}
    	iImage5->SetAlignment( EHCenterVCenter );
    	iImage5->SetBrushStyle( CWindowGc::ESolidBrush );
    ...
    }
    После чего у меня iImage5 весь белым заливается. Если с ним больше ничего не делать так белым и выводится, если же скопировать в него мою битмапу с jpg то разместит ее по-центру и зальет остальное по краям белым цветом, даже если моя битмапа с jpg меньше по-размеру. (в общем старая битмапа не становится "нижним слоем" - те не получится скопировать в iImage5 черную битмапу и затем разместить битмапу с jpg).

    В общем еще не нашел решение.
    Last edited by Kruil; 2010-05-21 at 06:21.

  4. #4
    Nokia Developer Moderator
    Join Date
    Jun 2007
    Location
    Moscow, Russia
    Posts
    1,355

    Re: фон в CEikImage

    Самый простой способ - изменяйте размеры CEikImage по размеру изображения. Меняйте его местоположение, так чтобы он оставался в нужном месте. Под CEikImage положите какую нибудь панельку нужной формы. Заливайте эту панель черным. Или заливайте черным весь контейнер.

    Либо можно породить свой класс от CEikImage и добавить в него поддержку SetBrushColor(). Но тогда придется отказаться от Ui Designer'а.

    2 all: может есть другие варианты?

  5. #5
    Registered User
    Join Date
    Sep 2007
    Posts
    23

    Re: фон в CEikImage

    а что есть переопределить цвета, что-то типа:

    iImage5->OverrideColorL(EColorControlBackground, KRgbBlack );

Similar Threads

  1. CEikImage size problem
    By Julia... in forum Symbian User Interface
    Replies: 9
    Last Post: 2010-01-18, 15:09
  2. Switch Images with CEikImage
    By athir.gillani in forum Symbian User Interface
    Replies: 4
    Last Post: 2009-05-22, 11:52
  3. How to programmatically force a re-paint on CEikImage
    By sreeneel in forum Symbian User Interface
    Replies: 10
    Last Post: 2009-02-13, 16:50
  4. Trying to create CEikImage with SVG
    By azjerei in forum Symbian
    Replies: 2
    Last Post: 2007-10-24, 11:10
  5. Problem in CEikImage control
    By Waltzgon in forum Symbian
    Replies: 2
    Last Post: 2004-10-07, 15:03

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •