Войти

Показать полную графическую версию : [решено] Можно ли в лейбле выводить разноцветный текст?


Страниц : [1] 2

evg64
26-09-2009, 19:26
Можно ли в лейбле выводить разноцветный текст?

Creat0R
26-09-2009, 19:46
Можно.

evg64
26-09-2009, 21:00
А как? Можно пример? Или где почитать про это можно?

Medic84
26-09-2009, 21:11
GUICtrlSetColor
GUICtrlSetBkColor

Эти 2 функции тебе помогут :happy:

evg64
26-09-2009, 21:16
Нет, я имею в виду, как можно сделать буквы в лэйбле разного цвета? К примеру, половина красные, половина зеленые.

Medic84
26-09-2009, 21:45
Вот так и надо сразу задачу ставить!
Насколько я знаю, думаю что нельзя.

Creat0R
27-09-2009, 00:41
Насколько я знаю, думаю что нельзя. »
Я же не просто так написал что можно: _GUICtrlCreateTFLabel - Создание форматированного элемента Label (http://autoit-script.ru/index.php/topic,177.0.html)

Creat0R
27-09-2009, 01:01
я имею в виду »
Вот нужно писать то что имеется в виду в первом сообщении, а не после того как спрашивают. Я конечно понял о чём речь с полуслова, т.к близко с этим связан, я давно и сам искал решение этой проблеме, и в результате пришлось самому написать решение :)

evg64
27-09-2009, 09:39
Спасибо! Клево! Буду решать свою задачу! :)


Вот так и надо сразу задачу ставить! »

Вот нужно писать то что имеется в виду в первом сообщении »
В первом сообщении я употребил слово "разноцветный" - оно само по себе подразумевает, что текст должен быть разных цветов.

evg64
13-10-2009, 00:26
_GUICtrlCreateTFLabel - Создание форматированного элемента Label »
Я попробовал в качестве аргумента для данной UDF указать строку, содержащую китайские иероглифы. Цвета отобразились верно, однако иероглифы как бы накладываются друг на друга (в качестве иллюстрации я прикрепил файл). Создается впечатление, будто на каждый символ выделяется фиксированное количество пикселей по ширине и этого количества иероглифам нехватает. Я пробовал найти в UDF параметр, который отвечал бы за ширину, выделяемую для каждого символа, но это не получилось. Также пробовал менять там шрифт с Arial на SimSun (самый распространенный шрифт для китайск языка) - пользы не принесло. Подкажите, пожалуйста, как сделать так, чтобы иероглифы отображались по всей ширине?

Creat0R
13-10-2009, 00:33
как сделать так, чтобы иероглифы отображались по всей ширине? »
Без примера ничем не могу помочь.

evg64
13-10-2009, 07:55
В примере первые 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 не видит иероглифов) и сохранял в юникоде.

Creat0R
13-10-2009, 15:40
Этот файл я создавал в блокноте (Scite не видит иероглифов) и сохранял в юникоде. »
Выложите лучше этот скрипт, у меня никк не распознаёт эту кодировку.

evg64
13-10-2009, 19:05
Вы имели в виду в скомпилированном виде? Ок. На всякий случай кину и сам текстовый файл.

Creat0R
13-10-2009, 19:45
Вы имели в виду в скомпилированном виде? »
Не совсем.. ладно, вот что у меня выдаёт скрипт:

http://pic.ipicture.ru/uploads/091013/1429/thumbs/B3SVVi8VTG.png (http://ipicture.ru/Gallery/Viewfull/25009962.html)

Т.ч разобраться в проблеме будет сложновато :)

evg64
13-10-2009, 19:52
)) Могу выложить принтскрин с компа. Как бы там ни было, скорее всего нужно что-то менять в UDF, потому что поменяй я иероглифы на буквы - все будет ок.

P.S. Дело определенно в UDF, потому что написав строку _GUICtrlCreateTFLabel($Label2Text, 70, 152, 260, 41), где $Label2Text - строка иероглифов без тегов, все вывелось в полную ширину, как и положено.

Creat0R
14-10-2009, 01:19
Также пробовал менять там шрифт с Arial на SimSun (самый распространенный шрифт для китайск языка) - пользы не принесло. »
Где именно меняли? в цикле for переменная $sFont_Name = "Arial"?

И ещё, попробуйте заменить в «$DEFAULT_CHARSET = 0» на 1.

Creat0R
14-10-2009, 01:52
пробовал менять там шрифт с Arial на SimSun »
А если так:

$sLabel1_Data = '<font name="SimSun" color="red" weight="800">否</font>'

evg64
14-10-2009, 08:27
Где именно меняли? в цикле for переменная $sFont_Name = "Arial"?
Да.

И ещё, попробуйте заменить в «$DEFAULT_CHARSET = 0» на 1.
Попробовал, проблема осталась.

$sLabel1_Data = '<font name="SimSun" color="red" weight="800">否</font>'
Тоже попробовал - не помогает, какая-то упертая ошибка )

Проблема скорее всего в функции __GUICtrlLabelGetTextWidth, но не понимая ничего в dll функциях, я не могу там разобраться(
Нашел один обходной путь: сначала создать лэйбл с оч обльшим шрифтом, которому выделится много ширины, а потом поменять там все лейблы на маленький шрифт. Лэйблы получаются высокими, но это не беда для конкретно моего случая.

Creat0R
15-10-2009, 06:05
Проблема скорее всего в функции __GUICtrlLabelGetTextWidth »
Да. И там где она используется, можно попробовать добавить пару единиц:

$aData_Width = __GUICtrlLabelGetTextWidth($sIn_Data, $iFont_Size, $iFont_Weight, $sFont_Name)
$aData_Width[0] += 5




© OSzone.net 2001-2012