Независимое государство разрешения C# WPF?

Вы можете сделать что-то вроде этого:

from collections import Counter

word_list = ["capital", "Capital", "Capital", "Capital", "capital", "bus", "Bus", "bus", "Bus", "white"]

# count them all while ignoring case
count = Counter(x.lower() for x in word_list)  

# count only the title-case ones
uppers = Counter(x.lower() for x in word_list if x[0].isupper())

# get frequency
res = {k.capitalize(): uppers.get(k, 0)/v for k, v in count.items()} 

, что приведет к желаемому:

print(res)  # -> {'Capital': 0.6, 'Bus': 0.5, 'White': 0.0}
12
задан 19 November 2008 в 14:26
поделиться

3 ответа

Как я измеряю размер управления WPF в дюймах ТОЧНО и независимо от установки DPI и разрешения экрана?

Это не на самом деле возможно, потому что, чтобы это работало, WPF должен был бы знать разрешение (с точки зрения DPI) Вашего монитора. Звучит хорошим в теории, но в практике окна не знают эту информацию. Поэтому окна само всегда принимают 96 точек на дюйм вслепую вместо того, чтобы быть более умными об этом.

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

Лучшей, которую можно сделать, является ничья, которую делает масштаб как карты Google. Вы знаете, что 1 пиксель == 1 миля, таким образом, можно провести линию на 50 пикселей на карте с маркировкой, говоря "эту строку, равняется 50 милям"

9
ответ дан 2 December 2019 в 22:23
поделиться

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

Сначала получите текущее разрешение. Предположите, что это 1280x1024, Теперь получают ширину монитора в использовании мм функция GetDeviceCaps. Это - стандартная библиотечная функция окон.

интервал widthmm = GetDeviceCaps (deviceContext, HORZSIZE); Моя ширина монитора составляет 362 мм

Так размер пикселя = 362/1280 = 0,282 мм

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

Таким образом для ответа на исходный вопрос размер холста 400 x 200 пикселей был бы (400 * 0.282/1000) x (200 * 0.282/1000) в метрах при показе на моем мониторе.

1
ответ дан 2 December 2019 в 22:23
поделиться

Спасибо за Вас быстрый ответ.

Я полностью соглашаюсь, но я не хотел верить этому во-первых. Вы видите, должно быть приближенное вычисление масштаба карты, если карта используется для отображения, различные слои данных карты (масштабируйте иждивенца). Большинство приложений использует управление ползунком с, например, 10 дискретных уровней карты для установки "масштаба".

Наличие абсолютной шкалы не крайне важно для приложения, было бы хорошо отобразить ориентировочную шкалу, как 1:15,000.

Абсолютная шкала потребовала бы для дополнительной переменной monitorPhysicalDPI (первоначально набор к 96), что, если бы использование принимает решение измениться, дал бы немного лучшее масштабирование (снова, это не крайне важно). Размер управления картой был бы:

карта. ActualWidth * (96/monitorPhysicalDPI) * inchesPerDIU, inchesPerDIU является 1/96

Снова это косметика.. Разве не было бы хорошо, если бы Windows знал размеры ФАКТИЧЕСКОГО управления? (пользователь должен был бы дать информацию об экранных размерах на установке ОС или просто установке монитора файл INF),

0
ответ дан 2 December 2019 в 22:23
поделиться
Другие вопросы по тегам:

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