Форум программистов, компьютерный форум, киберфорум
Наши страницы

C# .NET

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 231, средняя оценка - 4.97
Dimon16
14 / 14 / 1
Регистрация: 09.06.2010
Сообщений: 35
#1

Как перевести пиксели в сантиметры? - C#

15.10.2010, 22:31. Просмотров 28546. Ответов 12
Метки нет (Все метки)

Как перевести пиксели в сантиметры?
Заранее спасибо!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.10.2010, 22:31
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как перевести пиксели в сантиметры? (C#):

Подскажите, пиксели хранящиеся в Bitmape можно обработать как двухмерный массив? - C#
Есть координаты точки в POint pt и матрица pixels (которая по сути одномерный массив). Матрицей я её называю потомучто там храняться...

Пиксели - C#
Вот код :BmpData = MainBitmap.LockBits(new Rectangle(0, 0, MainBitmap.Width, MainBitmap.Height), ...

Перевод метров в пиксели - C#
Как перевести метры в пиксели? заранее спасибо.

Как перевести код с MSIL на C# - C#
Мне интересно как это сделать. Вобщем вот написал на MSIL код: .typelist { Dearchivator.Program/*02000002*/ ...

Как перевести строку в число? - C#
Есть строка в формате "hh:mm:ss" нужно сказать сколько это секунд.

Как перевести код C# на IL(MSIL) - C#
Мне интересно, как это сделать. Пробовал через рефлектор не получилось, что меня смутило(я обычно через рефлектор всегда перевожу на MC++).

12
tasty_sock
132 / 131 / 2
Регистрация: 26.01.2010
Сообщений: 351
15.10.2010, 23:57 #2
От разрешения зависит. Пиксель - это точка на экране, размер может варьироваться.
0
Dmitry
Эксперт по компьютерным сетямЭксперт NIX
10313 / 5808 / 361
Регистрация: 09.09.2009
Сообщений: 22,827
16.10.2010, 00:10 #3
dpi - dot per inch (точек на дюйм). Если допустим, установлено 96 dpi, то в дюйме (а это 2,54 см) их будет как раз 96 штук. Исходя из этого, на сантиметр (один) их будет 96 / 2,54 = 37,795......
0
body90
364 / 297 / 8
Регистрация: 26.05.2009
Сообщений: 2,676
16.10.2010, 02:42 #4
Скорее всего проблема именно в определении dpi монитора в данный момент.
0
Dimon16
14 / 14 / 1
Регистрация: 09.06.2010
Сообщений: 35
16.10.2010, 10:02  [ТС] #5
Мне нужно узнать сколько в сантиметрах Height,Width изображения?
Как определить сколько точек в дюйме?
0
ValeryB
633 / 378 / 6
Регистрация: 25.05.2010
Сообщений: 1,373
16.10.2010, 10:50 #6
Цитата Сообщение от Dimon16 Посмотреть сообщение
Как определить сколько точек в дюйме?
В свойствах изображения. Если это в виде графического файла.
А про какое изображение у вас речь - не понятно. Опишите проблему более подробно.
0
newdj
24 / 4 / 0
Регистрация: 03.09.2009
Сообщений: 73
16.10.2010, 10:58 #7
Я конечно не уверен, но почему-то мне кажется что в зависимости от качества изображения, размер точки, то есть пикселя, может варьироваться...
Ну и соответственно их количество в сантиметре тоже не постоянно...
0
Dmitry
Эксперт по компьютерным сетямЭксперт NIX
10313 / 5808 / 361
Регистрация: 09.09.2009
Сообщений: 22,827
16.10.2010, 11:17 #8
так не надо чтоб казалось, ндо просто прочитать параметрв файла - там будет все просто и понятно. у файла картинки есть данные о его разрешении в dpi и непосредственно размер в пикселах. допустим, разрешение файда 96 dpi и размер 1024 х 768. осталось сделать простое действие - поделить размеры в пикселях на значение dpi и получатся размеры в дюймах, потом поделить еще на 2,54 и получатся в сантиметрах...
0
Dimon16
14 / 14 / 1
Регистрация: 09.06.2010
Сообщений: 35
16.10.2010, 11:23  [ТС] #9
Походу это свойства:HorizontalResolution,VerticalResolution!
0
r0fL
16.10.2010, 13:51
  #10

Не по теме:

Запустите программу и измерьте на мониторе линейкой или штангенциркулем

0
NickoTin
Почетный модератор
Эксперт .NET
8245 / 3527 / 239
Регистрация: 14.06.2010
Сообщений: 4,510
Записей в блоге: 9
16.10.2010, 15:39 #11
Dimon16, попробуйте так:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
using System.Runtime.InteropServices;
...
        const int HORZSIZE = 4;
        const int VERTSIZE = 6;
 
        const int HORZRES = 8;
        const int VERTRES = 10;
 
        [DllImport("gdi32.dll", SetLastError = true)]
        static extern int GetDeviceCaps(
            IntPtr hDc,
            int index
            );
 
        [DllImport("user32.dll", SetLastError = true)]
        static extern IntPtr GetDC(IntPtr hWnd);
 
        [DllImport("user32.dll", SetLastError = true)]
        static extern int ReleaseDC(IntPtr hWnd, IntPtr hDC);
...
        SizeF GetPixelSizePerMM()
        {
            IntPtr hDC = GetDC(IntPtr.Zero);
            float wM = (float)GetDeviceCaps(hDC, HORZRES) / (float)GetDeviceCaps(hDC, HORZSIZE);
            float hM = (float)GetDeviceCaps(hDC, VERTRES) / (float)GetDeviceCaps(hDC, VERTSIZE);
            ReleaseDC(IntPtr.Zero, hDC);
 
            return new SizeF(wM, hM);
        }
Добавлено через 54 минуты
Забыл добавить: вывод будет в миллиметрах.
0
Dimon16
14 / 14 / 1
Регистрация: 09.06.2010
Сообщений: 35
16.10.2010, 16:17  [ТС] #12
Спасибо!
0
NickoTin
Почетный модератор
Эксперт .NET
8245 / 3527 / 239
Регистрация: 14.06.2010
Сообщений: 4,510
Записей в блоге: 9
16.10.2010, 16:46 #13
Цитата Сообщение от Dimon16 Посмотреть сообщение
Спасибо!
Рано радуетесь также может быть и такой вариант (он описан на большинстве форумах, статьях):
C#
1
2
3
4
5
6
7
8
9
10
11
12
        const int LOGPIXELSX = 88;
        const int LOGPIXELSY = 90;
...
        SizeF GetPixelSizePerMM()
        {
            IntPtr hDC = GetDC(IntPtr.Zero);
            float wM = (float)GetDeviceCaps(hDC, LOGPIXELSX) / 25.4F;
            float hM = (float)GetDeviceCaps(hDC, LOGPIXELSY) / 25.4F;
            ReleaseDC(IntPtr.Zero, hDC);
 
            return new SizeF(wM, hM);
        }
0
16.10.2010, 16:46
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.10.2010, 16:46
Привет! Вот еще темы с ответами:

Как перевести из string в int? - C#
застопорился на этой вот фигне. кто подскажет?

как правильно перевести из индека в букву - C#
series.XValues = sheet.get_Range(sheet.Cells, sheet.Cells); series.Values = sheet.get_Range(sheet.Cells, sheet.Cells); ...

Как перевести пиксели в сантиметры? - JavaScript
Нужно определить ширину экрана в сантиметрах. Как это сделать в пикселях, я знаю, но как перевести в сантиметры, ведь все экраны разные?...

Как перевести пиксели в сантиметры? - C#
Допустим, у меня есть программа которая рисует круг строго с определенным диаметром(в см), далее сохраняет в виде картинки. Как написать...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru