Конференция "Media" » Вывод текста на канве [D7, WinXP]
 
  • homm © (20.09.07 22:23) [20]
    > [19] Дельфин   (20.09.07 22:22)
    > Canvas.Brush.Style:=bsClear;

    а где Bitmap. ?
  • Дельфин (20.09.07 22:57) [21]

    > homm ©   (20.09.07 22:23) [20]
    > > [19] Дельфин   (20.09.07 22:22)> Canvas.Brush.Style:=bsClear;
    > а где Bitmap. ?

    Ну конечно же Bitmap!


    Bitmap.Canvas.Brus.Style:=bsClear;
    Bitmap.Canvas.TextOut(110,204,Player.Name);



    Тот же результат - фон - черный прямоугольник - текст
  • Fenik © (21.09.07 09:30) [22]
    TImage - зло
  • gtr86 (22.09.07 15:56) [23]
    Проблема с выводом текста на канву решен. Воспользовался компонентом CoolForm, в составе которого есть TransparentMemo. После выделения области для текста появляется TransparentMemo в который ввожу текст. По завершению ввода текста передаю лайны (TransparentMemo.lines.strings[]) TextRect'у. Скрываю TransparentMemo. Усе. Всем удачи.
  • Дельфин (22.09.07 17:52) [24]
    А без компонентов, тем паче сторонних что никак невозможно вывести текст на канву без прямоугольника, в который он вписан? Что-то слабо верится...


    > Fenik ©   (21.09.07 09:30) [22]
    > TImage - зло

    Это было в чей адрес? Я и не думал им пользоваться!
  • Дельфин (22.09.07 17:57) [25]
    По поводу текста без ненужного фона... А как делают шрифт в играх? Типа я встречал файл *.bmp, в котором написан весь алфавит. И в игре он выводится нормально... В каких программах можно сделать такой файл содержаший весь алфавит?
  • antonn © (22.09.07 19:43) [26]
    в пайнте.
    шрифты эти делают по простой причине - они не зависят от шрифтов системы, на них можно делать эффекты и они быстро рисуются.
    можно такое сделать и в дельфи, не сложно ведь
  • Denis_ © (23.09.07 12:43) [27]

    > > TImage - зло
    >
    > Это было в чей адрес? Я и не думал им пользоваться

    Это было в адрес TImage'а.
    паинт - тоже зло.
  • {RASkov} © (23.09.07 13:50) [28]
    > [27] Denis_ ©   (23.09.07 12:43)
    > паинт - тоже зло

    Паинт - TPaintBox?
    А что же не зло-то тогда? :)
    И почему паинт - зло?
    :)
  • Дельфин (23.09.07 15:58) [29]

    > antonn ©   (22.09.07 19:43) [26]
    > в пайнте.шрифты эти делают по простой причине - они не зависят
    > от шрифтов системы, на них можно делать эффекты и они быстро
    > рисуются.можно такое сделать и в дельфи, не сложно ведь

    То есть потом со шрифтом работают как со спрайтом? типа спрайт со множеством кадров анимации? Каждая анимация - отдельная буква, я правильно понимаю?
  • antonn © (23.09.07 22:14) [30]
    mspaint как раз не зло, очень удобный, а главное очень быстрый и позволяет увеличивать в 10 раз и точно не промахиваясь работать с пикселями.


    >
    > То есть потом со шрифтом работают как со спрайтом? типа
    > спрайт со множеством кадров анимации? Каждая анимация -
    > отдельная буква, я правильно понимаю?

    ээ, ну да, наверное:) просто берется позиция букквы в алфавите, умножается на ширину одной буквы в битмапе и координата Х готова (ну эт для моношириных шрифтов), а потом просто копируется куда нужно
  • Дельфин (25.09.07 11:05) [31]
    Кстати, а где достать программу для создания таких шрифтов. Весь яндекс облазил - находил только версии, которые делают английскую раскладку шрифта, а мне нужна русская! Обычного Courier New.
  • antonn © (25.09.07 12:31) [32]
    можно и самому написать, примерно так:
    procedure TForm1.Button1Click(Sender: TObject);
    var i,w,h:integer; bt:tbitmap;
    begin
    bt:=tbitmap.Create;
    try
     bt.Canvas.Font.Name:='Courier New';
     bt.canvas.Font.Size:=12;
     h:=0;
     w:=0;
    for i:=32 to 255 do begin
     if(h<bt.Canvas.TextHeight(char(i))) then h:=bt.Canvas.TextHeight(char(i));
     w:=w+bt.Canvas.TextWidth(char(i));
    end;
     bt.Width:=w;
     bt.Height:=h;
     w:=0;
    for i:=32 to 255 do begin
     bt.Canvas.TextOut( w, h-bt.Canvas.TextHeight(char(i)), char(i));
     w:=w+bt.Canvas.TextWidth(char(i));
    end;
     bt.SaveToFile('C:\111.bmp');
    finally
     bt.Free;
    end;
    end;

  • homm © (25.09.07 12:31) [33]
    > [31] Дельфин   (25.09.07 11:05)

    А что, использовать тот Courier New, что в системе установлен, религия не позволяет?
  • homm © (25.09.07 12:32) [34]
    > [32] antonn ©   (25.09.07 12:31)

    Курьер могоширийный :)
  • antonn © (25.09.07 12:34) [35]

    > Курьер могоширийный :)
    >

    мне пофиг, я показал как выводить, а там уж можно и сделать как себе удобней :)
  • antonn © (25.09.07 12:36) [36]

    >
    > А что, использовать тот Courier New, что в системе установлен,
    >  религия не позволяет?

    если испульзется 3Д то, как мне думается (я плохо знаю, но смею думать:)), было бы куда быстрее выводить буковки спрайтами, нагружая на этот процесс видеокарту, а не мучать "рендер" винды с процессором. К тому же на корейской винде не будет кракозябров со спрайтами %)
  • homm © (25.09.07 12:41) [37]
    > [36] antonn ©   (25.09.07 12:36)
    > если испульзется 3Д

    Ты сабж читал? :)
  • antonn © (25.09.07 13:10) [38]
    мы уже давно то сабжа отошли :)
  • Дельфин (26.09.07 10:00) [39]
    Все, уже не нужно. Написал программу, создающую BMP шрифт - супер! Без проблем можно работать со шрифтами, у которых различаются ширина разных символов, так что вообще отлично. Плюс проще находить символы - они расписаны не рядами, а в строчку. В общем - здорово! Приятно, когда сам находишь выход из ситуации.
 
Конференция "Media" » Вывод текста на канве [D7, WinXP]
Есть новые Нет новых   [134431   +10][b:0][p:0.001]