Конференция "Media" » GDI+ и изображения [D7, WinXP]
 
  • kblc (26.01.08 00:14) [0]
    Уважаемые мастера,
    у меня к вам вопрос...

    есть возможность вывести изображение (TGPBitmap, TGPImage)  внутри произвольного региона?

    т.е. конкретно мне нужно сделать вот что:
    взять изображение (Его координаты (0,0), (10,0), (0,12),(10,12)) 10pix Х 12pix и натянуть его на вот такой регион: (0,0),(10,4),(0,12),(10,8).
  • antonn (work) (26.01.08 09:50) [1]
    поищи "афинное преобразование" и "перспективное преобразование". ссылку бы дал, если бы помнил.
  • antonn (work) (26.01.08 09:52) [2]
    возможно в самом ГДИ+ уже есть такая фича)
  • kblc (26.01.08 15:32) [3]
    есть конечно вариант
    TGPGraphics.FillPath(Brush:TGPBrush; Path:TGPGraphicsPath);
    где Brush: TGPTextureBrush...

    но(!) это тоже самое, что и установить область отрисовки (Clip) и рисовать картинку.

    ((

    antonn (work)
    афинное преобразование - это ж не то, или я не прав?

    а вот по поводу перспективного преобразования я ничего не нашёл.. (
  • antonn © (26.01.08 21:23) [4]
    вот пример, как вписать в произвольный выпуклый четырехугольник:
    http://desksoft.ru/index.php?forum=13&th=67
  • kblc (27.01.08 11:17) [5]
    antonn,
    Благодарю за помощь. Но я хотел попробовать это сделать средствами GDI+.

    Если в этой библиотеке нет такой возможности, то я, конечно, поспользуюсь вашим ответом.
  • гость (28.01.08 18:01) [6]
    ответ на вопрос здесь

    procedure Tboard.mydraw;
    var
    imageboardgraphics : TGPGraphics;
    begin
     imageboardgraphics := TGPGraphics.Create(imageboard.Picture.Bitmap.Canvas.handle);
     imageboardgraphics.SetInterpolationMode(InterpolationModeHighQualityBicubic);
     imageboardgraphics.DrawImage(
                                  Bmp,
                                  imageboardrect,
                                  0, 0,bmp.getwidth,bmp.getheight, UnitPixel
                                  );

      imageboardgraphics.Free;

     tform(tpanel(owner).GetParentComponent).Refresh;
     end;
  • kblc © (29.01.08 06:41) [7]
    А где тут задаётся произвольный регион, если при
    imageboardgraphics.DrawImage(
                                 Bmp,
                                 imageboardrect,
                                 0, 0,bmp.getwidth,bmp.getheight, UnitPixel
                                 );

    0 - Left,
    0 - Top,
    bmp.getwidth - Width
    bmp.getheight - Height

    Где же задание региона, внутрь которого и нужно выводить графику?
  • MultIfleX (29.01.08 11:55) [8]
    есть возможность вывести изображение (TGPBitmap, TGPImage)  внутри произвольного региона?

    ответ: да есть, смотри стандартные примеры идущие с GDI+ для delphi, там есть пример вывода в произвольный четырёхугольник.
  • capkoh © (30.01.08 21:04) [9]
    Насколько я понял, речь идёт о выводе прямоугольника в трапецию.
    Но в GDI+ предусмотрено рисование только в параллелограммы, вроде...
  • Рамиль © (31.01.08 09:58) [10]

    > capkoh ©   (30.01.08 21:04) [9]

    Можно сделать любую афинную трансформацию.
  • cerber (05.02.08 22:17) [11]
    А Директ Х никто не читал?
 
Конференция "Media" » GDI+ и изображения [D7, WinXP]
Есть новые Нет новых   [133929   +473][b:0][p:0]