Создание из массива с различной длиной ст массив строк по заданной длине

Главная Форумы Задать вопрос Создание из массива с различной длиной ст массив строк по заданной длине

Просмотр 10 сообщений - с 16 по 25 (из 25 всего)
  • Автор
    Сообщения
  • #8818 Score: 0
    Isk
    Участник
    3 pts

    Благодарю на выходных буду тестить. на работе не когда завал. По результату отпишу что получилось.

    #8819 Score: 0
    ИваСерж
    Хранитель
    134 pts

    Набросал примерно код, который по идее должен работать, но!
    Метод System.Graphics.MeasureString (String, Font) у меня в коде почему-то требует три параметра на вход и выбивает ошибку.
    Как пофиксить?
    https://pastebin.com/EQ4uU84W

    #8820 Score: 3
    Legantmar
    Хранитель
    474 pts

    Пример:
    TextRenderer.MeasureText(text, System.Drawing.Font(“Microsoft Sans Serif”, 10)).Width – ширина текста text (длина строчки) в пикселях

    #8822 Score: 0
    Isk
    Участник
    3 pts

    Вопрос есть ли метод создания строки со вставкой символа по заданному размеру в пикселях?

    #8823 Score: 0
    Isk
    Участник
    3 pts

    Либо решать задачу вставки символов в определенный размер в пиксела методом перевода в мм через разницу длин.

    #8824 Score: 0
    Анатолий
    Участник
    37 pts

    У меня получилось)

    import clr, sys, System
    clr.AddReference("System.Windows.Forms")
    clr.AddReference('System.Drawing')
    import System.Drawing
    import System.Windows.Forms
    from System.Drawing import *
    from System.Windows.Forms import *
    text1 = IN[0]
    text2 = IN[1]
    lspace = IN[2]
    font = IN[3]
    size = IN[4]
    var = int(IN[5])
    fonts,sizes1,fonts2,sizes2 = [],[],[],[]
    for i,l in zip(text1,text2):
    	font1 = System.Drawing.Font(font, size)
    	wd1 = TextRenderer.MeasureText(i,font1).Width
    	wd2 = TextRenderer.MeasureText(l,font1).Width
    	space1 = TextRenderer.MeasureText(lspace,font1).Width
    	fonts.append(font1)
    	sizes1.append(wd1)
    	sizes2.append(wd2)
    max1 = 0
    max2 = 0
    amax = 0
    ki1,ki2 = [],[]
    for ii in sizes1:
    	if ii > max1:
    		max1 = ii
    		ki1.append(max1)
    for ii1 in text1:
    	if len(ii1) > amax:
    		amax = len(ii1)
    		ki2.append(amax)
    for ki in sizes2:
    	if ki > max2:
    		max2 = ki
    x1,x2,x3,x4,x5 = [],[],[],[],[]
    for i,m in zip(text1,sizes1):
    	if (max1-m-9) > 0:
    		n = len(i)
    		kr1 = (max1-m+var)/(space1-9)+n
    		c = i.ljust(kr1," ")
    		x1.append(c)
    	else:
    		c = i.ljust(0," ")
    		x1.append(c)
    for k in text2:
    	d = k.ljust(max2/space1," ")
    	x2.append(d)
    xx1,xx2 = [],[]	
    for num, (mat,thick) in enumerate(zip(x1,x2)):
    	xx1.append ("".join([str(num+1)+". "+mat + " "+thick]))
    param1 = "\n".join(xx1)
    OUT = param1
    #8825 Score: 0
    Isk
    Участник
    3 pts

    Благодарствую

    #8826 Score: 0
    Isk
    Участник
    3 pts

    В 40 и 42 строке  <span style=”font-size: 150%;”>-9 </span>- <span style=”font-size: 200%;”>?</span>

    #8827 Score: 0
    Legantmar
    Хранитель
    474 pts

    lsk, на мой взгляд оптимальный вариант предложил ИваСерж в комментарии 8810

    нужно отдельно размещать и выравнивать по левому краю наименование слоев и отдельно размеры, это проще и точнее разместить.
    измерять длину строки в пикселях и добивать пробелы это не лучшее решение.

    #8828 Score: 0
    Isk
    Участник
    3 pts

    Я думаю оба варианта по своему полезны. Все таки думаю еще покопаться в Set<wbr />Tab<wbr />Stops(Single, Single[])

Просмотр 10 сообщений - с 16 по 25 (из 25 всего)
  • Для ответа в этой теме необходимо авторизоваться.