Показать полную графическую версию : [решено] Можно ли в лейбле выводить разноцветный текст?
Можно ли в лейбле выводить разноцветный текст?
А как? Можно пример? Или где почитать про это можно?
GUICtrlSetColor
GUICtrlSetBkColor
Эти 2 функции тебе помогут :happy:
Нет, я имею в виду, как можно сделать буквы в лэйбле разного цвета? К примеру, половина красные, половина зеленые.
Вот так и надо сразу задачу ставить!
Насколько я знаю, думаю что нельзя.
Насколько я знаю, думаю что нельзя. »
Я же не просто так написал что можно: _GUICtrlCreateTFLabel - Создание форматированного элемента Label (http://autoit-script.ru/index.php/topic,177.0.html)
я имею в виду »
Вот нужно писать то что имеется в виду в первом сообщении, а не после того как спрашивают. Я конечно понял о чём речь с полуслова, т.к близко с этим связан, я давно и сам искал решение этой проблеме, и в результате пришлось самому написать решение :)
Спасибо! Клево! Буду решать свою задачу! :)
Вот так и надо сразу задачу ставить! »
Вот нужно писать то что имеется в виду в первом сообщении »
В первом сообщении я употребил слово "разноцветный" - оно само по себе подразумевает, что текст должен быть разных цветов.
_GUICtrlCreateTFLabel - Создание форматированного элемента Label »
Я попробовал в качестве аргумента для данной UDF указать строку, содержащую китайские иероглифы. Цвета отобразились верно, однако иероглифы как бы накладываются друг на друга (в качестве иллюстрации я прикрепил файл). Создается впечатление, будто на каждый символ выделяется фиксированное количество пикселей по ширине и этого количества иероглифам нехватает. Я пробовал найти в UDF параметр, который отвечал бы за ширину, выделяемую для каждого символа, но это не получилось. Также пробовал менять там шрифт с Arial на SimSun (самый распространенный шрифт для китайск языка) - пользы не принесло. Подкажите, пожалуйста, как сделать так, чтобы иероглифы отображались по всей ширине?
как сделать так, чтобы иероглифы отображались по всей ширине? »
Без примера ничем не могу помочь.
В примере первые 2 лейла выводят цветные иероглифы, а вторые 2 - те же иероглифы, но функцией GUICtrlCreateLabel.
Opt ( "TrayIconDebug",1)
Opt ("WinTitleMatchMode",2)
#include <GUIConstants.au3>
#include <StaticConstants.au3>
#include <GUICtrlCreateTFLabel.au3>
$hGUI = GUICreate("_GUICtrlCreateTFLabel Example #1", 633, 447, 192, 124)
$sLabel1_Data = '<font color="red" weight="800">否</font>'
$sLabel2_Data = '<font color="red" weight="800">如</font><font color="green" weight="800">下</font>'
$sLabel3_Data = "否"
$sLabel4_Data = "如下"
_GUICtrlCreateTFLabel($sLabel1_Data, 192, 80, 228, 25)
_GUICtrlCreateTFLabel($sLabel2_Data, 192, 120, 228, 25)
GUICtrlCreateLabel($sLabel3_Data, 192, 160, 228, 25); этот
GUICtrlCreateLabel($sLabel4_Data, 192, 200, 228, 25); и этот лэйбл показывают, как иероглифы выглядят в полную ширину
GUISetState(@SW_SHOW, $hGUI)
While 1
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd
P.S. Этот файл я создавал в блокноте (Scite не видит иероглифов) и сохранял в юникоде.
Этот файл я создавал в блокноте (Scite не видит иероглифов) и сохранял в юникоде. »
Выложите лучше этот скрипт, у меня никк не распознаёт эту кодировку.
Вы имели в виду в скомпилированном виде? Ок. На всякий случай кину и сам текстовый файл.
Вы имели в виду в скомпилированном виде? »
Не совсем.. ладно, вот что у меня выдаёт скрипт:
http://pic.ipicture.ru/uploads/091013/1429/thumbs/B3SVVi8VTG.png (http://ipicture.ru/Gallery/Viewfull/25009962.html)
Т.ч разобраться в проблеме будет сложновато :)
)) Могу выложить принтскрин с компа. Как бы там ни было, скорее всего нужно что-то менять в UDF, потому что поменяй я иероглифы на буквы - все будет ок.
P.S. Дело определенно в UDF, потому что написав строку _GUICtrlCreateTFLabel($Label2Text, 70, 152, 260, 41), где $Label2Text - строка иероглифов без тегов, все вывелось в полную ширину, как и положено.
Также пробовал менять там шрифт с Arial на SimSun (самый распространенный шрифт для китайск языка) - пользы не принесло. »
Где именно меняли? в цикле for переменная $sFont_Name = "Arial"?
И ещё, попробуйте заменить в «$DEFAULT_CHARSET = 0» на 1.
пробовал менять там шрифт с Arial на SimSun »
А если так:
$sLabel1_Data = '<font name="SimSun" color="red" weight="800">否</font>'
Где именно меняли? в цикле for переменная $sFont_Name = "Arial"?
Да.
И ещё, попробуйте заменить в «$DEFAULT_CHARSET = 0» на 1.
Попробовал, проблема осталась.
$sLabel1_Data = '<font name="SimSun" color="red" weight="800">否</font>'
Тоже попробовал - не помогает, какая-то упертая ошибка )
Проблема скорее всего в функции __GUICtrlLabelGetTextWidth, но не понимая ничего в dll функциях, я не могу там разобраться(
Нашел один обходной путь: сначала создать лэйбл с оч обльшим шрифтом, которому выделится много ширины, а потом поменять там все лейблы на маленький шрифт. Лэйблы получаются высокими, но это не беда для конкретно моего случая.
Проблема скорее всего в функции __GUICtrlLabelGetTextWidth »
Да. И там где она используется, можно попробовать добавить пару единиц:
$aData_Width = __GUICtrlLabelGetTextWidth($sIn_Data, $iFont_Size, $iFont_Weight, $sFont_Name)
$aData_Width[0] += 5
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.