Нужен способ масштабировать шрифт для установки прямоугольнику

Создайте еще одну кнопку для включения звука и сохраните ее стиль как display:none, а затем в функции переключения измените видимость соответственно,

var mediaPlayer = document.getElementById('video');
 var muteBtn = document.getElementById('mute-button');
 var unmuteBtn = document.getElementById('unmute-button');


 function toggleMute() {
   if (mediaPlayer.muted) {
     // Change the button to be a mute button
     unmuteBtn.style.display='block';
     muteBtn.style.display='none';
     // Unmute the media player
     mediaPlayer.muted = false;
   } else {
     // Change the button to be an unmute button
     muteBtn.style.display='block';
     unmuteBtn.style.display='none';
     // Mute the media player
     mediaPlayer.muted = true;
   }
 }

См. Демонстрацию скрипки Js здесь

13
задан Bill K 28 May 2012 в 19:14
поделиться

4 ответа

полу-псевдо-код:

public Font scaleFont(String text, Rectangle rect, Graphics g, Font pFont) {
    float fontSize = 20.0f;
    Font font = pFont;

    font = g.getFont().deriveFont(fontSize);
    int width = g.getFontMetrics(font).stringWidth(text);
    fontSize = (rect.width / width ) * fontSize;
    return g.getFont().deriveFont(fontSize);
}

я не уверен, почему вы передаете pFont, поскольку он не используется ...

20
ответ дан 1 December 2019 в 20:44
поделиться

You could use interpolation search:

public static Font scaleFont(String text, Rectangle rect, Graphics g, Font pFont) {
    float min=0.1f;
    float max=72f;
    float size=18.0f;
    Font font=pFont;

    while(max - min <= 0.1) {
        font = g.getFont().deriveFont(size);
        FontMetrics fm = g.getFontMetrics(font);
        int width = fm.stringWidth(text);
        if (width == rect.width) {
            return font;
        } else {
            if (width < rect.width) {
                min = size;
            } else {
                max = size;
            }
            size = Math.min(max, Math.max(min, size * (float)rect.width / (float)width));
        }
    }
    return font;
}
3
ответ дан 1 December 2019 в 20:44
поделиться

Вы можете повысить эффективность, используя шаблон двоичного поиска - высокий / низкий с некоторой степенью детализации - 1, 0,5 или 0,25 балла.

Например, предположить, что 18, слишком много? Перейти на 9, слишком низко? 13,5, слишком мало? 15,75, слишком высоко? 14!

1
ответ дан 1 December 2019 в 20:44
поделиться

Другой очевидный способ - предварительно нарисовать текст на растровом изображении, а затем сжать растровое изображение, чтобы оно соответствовало прямоугольнику; но,

0
ответ дан 1 December 2019 в 20:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: