Discussion Board

Page 1 of 3 123 LastLast
Results 1 to 15 of 39
  1. #1
    Registered User midday's Avatar
    Join Date
    Nov 2007
    Posts
    45
    Вот симба не выводит текст под углом. Что делать ? Битмепы он тоже вращает только на 90 градусов..

    У кого есть какие мысли ?

  2. #2
    Nokia Developer Champion Den123's Avatar
    Join Date
    Jul 2007
    Location
    Magnitogorsk, Russia
    Posts
    536
    Векторные шрифты какие-нибудь прикрутить + матрицу поворота использовать ... Хотя это, конечно, суровое решение

  3. #3
    Super Contributor ivey's Avatar
    Join Date
    Jun 2006
    Location
    Moscow, Russia
    Posts
    803
    На счет текста не знаю.

    По поводу битмап: AknIconUtils::SetSizeAndRotation(). Сам не пробовал, но согласно документации метод должен поворачивать битмапу на любой угол.
    Regards,
    ivey

  4. #4
    Nokia Developer Champion stenlik's Avatar
    Join Date
    Mar 2004
    Location
    Czech Republic
    Posts
    2,037
    Privet,

    as I understand you want to rotate text? Well this is not possible in the Symbian. Images as I know could be rotated by CBitmapRotator but only 90, 180 and 270 angles are supported. With CAknIconUtils you might be able to do arbitrary angle.

    Another possibility could be the OpenGL API... - but I have no experience with it.

    BR,
    STeN

  5. #5
    Nokia Developer Champion Den123's Avatar
    Join Date
    Jul 2007
    Location
    Magnitogorsk, Russia
    Posts
    536
    Quote Originally Posted by ivey View Post
    На счет текста не знаю.

    По поводу битмап: AknIconUtils::SetSizeAndRotation(). Сам не пробовал, но согласно документации метод должен поворачивать битмапу на любой угол.
    Поворачивать должен, однако только если в качестве параметра передается CAknBitmap. Подозреваю, что только для SVG.
    Произвольный битмап, например такой:

    Code:
    TDisplayMode displayMode = CEikonEnv::Static()->ScreenDevice()->DisplayMode();
    CFbsBitmap* iOffScreenBitmap = new ( ELeave ) CFbsBitmap();
    iOffScreenBitmap->Create( Rect().Size(), displayMode );
    не поворачивает, к сожалению.

    А для поворота SVG все достаточно очевидно - нужно пробежаться по XML и перемножить все координаты на матрицу поворота.

  6. #6
    Registered User midday's Avatar
    Join Date
    Nov 2007
    Posts
    45
    Ну я сделаю так.. Возьму отрисую на битмапе двухцветном шрифт.. Потом отсканирую, либо как-то надо получить доступ к битам этим, и просто повернуть эту матрицу на нужный угол. Давайте сделаем ? Я сегодня попробую сделать и отпишу , если получится. Выложу исходники функции поворота ;-)
    Вообще обещаю, что сделаю это, иначе мне конец в универе ! Потом надо будет англичанам помочь, они тоже мудятся.

  7. #7
    Super Contributor ivey's Avatar
    Join Date
    Jun 2006
    Location
    Moscow, Russia
    Posts
    803
    Я вообще это когда-то делал Код этот copyrighted поэтому поделиться, к сожалению, не могу. Но с поворотом там алгоритм не сложный, поэтому, думаю, проблем особых у вас не возникнет.

    Для манипуляции битмапами рекоммендую воспользоваться классом TBitmapUtil.
    Regards,
    ivey

  8. #8
    Nokia Developer Champion stenlik's Avatar
    Join Date
    Mar 2004
    Location
    Czech Republic
    Posts
    2,037
    привет!
    Надеюсь, что ты ходко одолеешь.

    I think that the task dhould be easy. Just create the bitmap CFbsBitmap (check WIki how to do that), draw the requested text on it using its context CWindowGc and then use the AknIconUtils to rotate the result and draw it onto application surface.

    BR
    SteN

  9. #9
    Nokia Developer Champion Den123's Avatar
    Join Date
    Jul 2007
    Location
    Magnitogorsk, Russia
    Posts
    536
    midday
    Я недавно добавил в википедию статью об анимации:
    http://wiki.forum.nokia.com/index.ph...86%D0%B8%D1%8F
    исходный код этого примера: http://wiki.forum.nokia.com/index.ph...ExampleSrc.zip

    Там как раз есть реализация матрицы поворота - класс CTransformMatrix. С его помощью производится вращение в трехмерном пространстве - пользуйтесь Если Ось Z не нужна - третью координату точек возьмите за 0, инкремент угла поворота по Z также сделайте равным 0.

    stenlik
    Class AknIconUtils rotate only CAknBitmap. So, if You create CFbsBitmap like this:
    Code:
    TDisplayMode displayMode = CEikonEnv::Static()->ScreenDevice()->DisplayMode();
    CFbsBitmap* iOffScreenBitmap = new ( ELeave ) CFbsBitmap();
    iOffScreenBitmap->Create( Rect().Size(), displayMode );
    AknIconUtils do not rotate it.

  10. #10
    Registered User midday's Avatar
    Join Date
    Nov 2007
    Posts
    45
    Quote Originally Posted by stenlik View Post
    привет!
    Надеюсь, что ты ходко одолеешь.

    I think that the task dhould be easy. Just create the bitmap CFbsBitmap (check WIki how to do that), draw the requested text on it using its context CWindowGc and then use the AknIconUtils to rotate the result and draw it onto application surface.

    BR
    SteN
    Thanks.. Strange.. Its very strange, why did i missed out it?
    Quote Originally Posted by SDK S60 2nd Ed FP 3;
    static IMPORT_C TInt AknIconUtils::SetSizeAndRotation ( CFbsBitmap * aBitmap,
    const TSize & aSize,
    TScaleMode aMode,
    TInt aAngle
    ) [static]

    Initializes the icon to the given size, if the parameter aBitmap is an instance of CAknBitmap, i.e.

    created with AknIconUtils methods. If it is not CAknBitmap, this method does nothing. Note that this call sets the sizes of both bitmap and mask (if it exists), regardless of which is given as the parameter. Additionally, this method rotates the icon according to the given angle.



    Parameters:
    aBitmap bitmap or mask of the icon
    aSize icon size
    aAngle Rotation angle in degrees.


    static void AknIconUtils::RotateAndScaleBitmapL ( const TRect & aTrgRect,
    CFbsBitmap * aTrgBitmap,
    CFbsBitmap * aSrcBitmap,
    TInt aAngle
    ) [static]

    Bitmap rotation and scaling.

    Might be exported later. Scales and rotates the given bitmap according to the parameters. Supported bitmap modes are EGray2, EGray256, EColor256, EColor4K, EColor64K and EColor16MU. All other bitmap depts will cause a leave with KErrNotSupported. The only supported scalemode is EAspectRatioPreserved. The unused area in the target bitmap is filled with black color unless the bitmap depth is EGray8 when the area is filled with white. Areas that do not fit to the target area after rotation are clipped out

    If the bitmap depth is EGray2, the routine will perform noticeably worse.


    Parameters:
    aTrgRect target rect inside the target bitmap
    aTrgBitmap the target bitmap
    aSrcBitmap the source bitmap
    aAngle the rotation angle in degrees

    У кого какие мысли появились ? Ведь тут вроде передаются именно CFbsBitmap-ы. Щас проверю попробую
    Last edited by midday; 2007-12-01 at 17:53.

  11. #11
    Registered User midday's Avatar
    Join Date
    Nov 2007
    Posts
    45
    Чет не получилось заюзать. Такое чувство, что ддл-ка не подключилась. ошибка при компилляции... такая же.. Undefined symbol и кракозябли всякие... Попробуйте кто, можнет у меня что- то не так ? Вроде всё подключил..

  12. #12
    Nokia Developer Champion Den123's Avatar
    Join Date
    Jul 2007
    Location
    Magnitogorsk, Russia
    Posts
    536
    Quote Originally Posted by midday View Post
    Чет не получилось заюзать. Такое чувство, что ддл-ка не подключилась. ошибка при компилляции... такая же.. Undefined symbol и кракозябли всякие...
    А какие кракозябры ? Там вроде как вполне читаемые имена функций можно разглядеть... Выкладывайте output.

    Попробуйте кто, можнет у меня что- то не так ? Вроде всё подключил..
    Я пробовал. Все подключил, все работает ... но не поворачивает.

  13. #13
    Registered User midday's Avatar
    Join Date
    Nov 2007
    Posts
    45
    Undefined symbol: 'void AknIconUtils::RotateAndScaleBitmapL(class TRect const &, class CFbsBitmap *, class CFbsBitmap *, int) (?RotateAndScaleBitmapL@AknIconUtils@@SAXABVTRect@@PAVCFbsBitmap@@1H@Z)'[]

  14. #14
    Nokia Developer Champion Den123's Avatar
    Join Date
    Jul 2007
    Location
    Magnitogorsk, Russia
    Posts
    536
    Quote Originally Posted by midday View Post
    Undefined symbol: 'void AknIconUtils::RotateAndScaleBitmapL(class TRect const &, class CFbsBitmap *, class CFbsBitmap *, int) (?RotateAndScaleBitmapL@AknIconUtils@@SAXABVTRect@@PAVCFbsBitmap@@1H@Z)'[]
    midday у вас какое SDK ?

    Действительно, RotateAndScaleBitmapL не линкуется если собирать под Emulator Debug ... А вот если собирать под Phone Release то все нормально. Видимо отладочная aknicon.lib какая-то проблемная ... Пробовал собирать под S60_3rd_FP1.

    А вот если использовать метод этого же класса SetSizeAndRotation то проблем с линковкой нет. Правда и поворота нет тоже.

  15. #15
    Registered User midday's Avatar
    Join Date
    Nov 2007
    Posts
    45
    У меня тоже S60_3rd_FP1. А под Phone Release поворачивает нормально?

Page 1 of 3 123 LastLast

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
Nokia Developer aims to help you create apps and publish them so you can connect with users around the world.

京ICP备05048969号  © Copyright Nokia 2013 All rights reserved