Конференция "Media" » организация бегущей строки [D7, WinXP]
 
  • kiligin © (04.11.09 02:47) [0]
    Добрый день!
    У меня вопрос следующий:
    как организовать бегущую строку из paintbox-а (с использованием bitblt, если есть другие варианты, можно рассмотреть)?
    Постановка задачи такая: имеется набор картинок (размером в среднем 25х25 пикселов), они выстраиваются в ряд (строку) на paintbox-е. Теперь как сделать чтобы они двигались справа налево (образовывая тем самым бегущую строку)
  • Омлет © (04.11.09 03:21) [1]
    А в чем проблема?
    По таймеру выводи, смещая влево на 1 пиксель. BitBlt подойдет.
  • kiligin © (04.11.09 12:26) [2]
    А есть какой-нибудь более быстрый способ очитски paintbox-а, чем refresh или repaint???
  • brother © (04.11.09 12:33) [3]
    PatBlt ?
  • kiligin © (04.11.09 12:38) [4]
    еще вопрос созрел...
    я в paintbox рисую различные картинки из timage (куда они загружаются предварительно). а как теперь из paintbox-а в другой timage записать все эти картинки целиком. Следующий отрезок кода, мне не помог... или я может что неправильно сделал?

    bitblt(y.Picture.Bitmap.Canvas.Handle, 0,0,
           paintbox1.Width, paintbox1.Height,
           paintbox1.Canvas.Handle, 0,0,
           srccopy);

  • Омлет © (04.11.09 18:33) [5]
    Натрави свою функцию рисования на Image, как на PaintBox.
    С PaintBox лучше ничего не копировать, т.к. он влюбой момент может затереться.
  • Омлет © (04.11.09 18:36) [6]
    > [2] kiligin ©   (04.11.09 12:26)

    Что ты понимаешь под очисткой?
    Refresh вызывает Repaint, если я не ошибаюсь, плюс отрисовку того, что под ним, а Repaint вызывает Paint. Смотри исходники VCL.
  • Омлет © (04.11.09 18:38) [7]
    > [4] kiligin ©   (04.11.09 12:38)

    Еще вариант - сначала всё рисовать на bitmap, потом копировать на PaintBox, на Image и куда еще захочешь.
  • kiligin © (04.11.09 19:47) [8]
    bitmap это отдельный компонент? что-то никак не могу его найти... подскажите!
  • Омлет © (04.11.09 19:55) [9]
    Bitmap - это экземпляр класса TBitmap - растровое изображение вв памяти.

    Например есть поле Bmp: TBitmap, в OnCreate формы пишем
    begin
     Bmp := TBitmap.Create;
     Bmp.LoadFromFile('img.bmp');
    end;

    Потом в PaintBox1OnPaint пишем что-нибудь вроде
     PaintBox1.Canvas.Draw(0, 0, Bmp);
    и на PaintBox будет выводиться всегда этот Bitmap.

    Советую почитать литературу и справку.
  • Омлет © (04.11.09 19:56) [10]
    У TBitmap есть своя канва, на которой можно рисовать в памяти, а потом Bitmap выводить куда-нибудь на экран.
  • kiligin © (05.11.09 10:57) [11]
    а tbitmap поддерживает рисование за пределами видимости? задаю такой вопрос, потому возникает ситуация, когда размер области рисования порой может быть меньше чем количество рисунков выведенных на эту область.
  • Jeer © (05.11.09 11:00) [12]

    > kiligin ©   (05.11.09 10:57) [11]
    >
    > а tbitmap поддерживает рисование


    Может все таки попробуешь F1 TBitmap ?
 
Конференция "Media" » организация бегущей строки [D7, WinXP]
Есть новые Нет новых   [134430   +3][b:0][p:0.001]