Компьютерный форум NoWa.cc Здесь может быть Ваша реклама
Правила Форума
редакция от 22.06.2020
Портал .::2BakSa.WS::.
Вернуться   Компьютерный форум NoWa.cc > В помощь вебмастеру > Программирование > .NET

Уважаемые пользователи nowa.cc и 2baksa.ws. У нас сложилось тяжёлое финансовое положение. Мы работаем для вас вот уже более 15 лет и сейчас вынуждены просить о помощи. Окажите посильную поддержку проектам. Мы очень надеемся на вас. Реквизиты для переводов ниже.
Webmoney Webmoney WMZ: 826074280762 Webmoney WME: 804621616710
PayPal PayPal_Email E-mail для связи по вопросу помощи
Кошелёк для вашей помощи YooMoney 4100117770549562
YooMoney Спасибо за поддержку!
Ответ
 
Опции темы Опции просмотра Language
Старый 14.11.2007, 21:26   #16
pluton
ViP
 
Аватар для pluton
 
Пол:Мужской
Регистрация: 23.02.2007
Сообщений: 1,027
Репутация: 560
По умолчанию Ответ: Вопросы по C#

EvgeniuXP2, подскажи где достать полосу прокрутки?
а то я не нашёл. контрола такого нету. в свойствах формы вроде тоже нельзя включить скроллбары
__________________
THE TRUTH IS OUT THERE
pluton вне форума
 
Ответить с цитированием Вверх
Здесь может быть Ваша реклама
Здесь может быть Ваша реклама


Реклама: круизы по волге 2024 расписание и цены на теплоходы из москвытрейнеры для зубов - ценагигиена зубов стоимостьрешетка вентиляционная 300х1500букет большой


Старый 14.11.2007, 21:32   #17
Riccon
Неактивный пользователь
 
Пол:Мужской
Регистрация: 20.02.2007
Сообщений: 5
Репутация: 1
По умолчанию Ответ: Вопросы по C#

Свойство у формы или контрола Panel - AutoScroll

Добавлено через 5 минут
Цитата:
Сообщение от EvgeniuXP2 Посмотреть сообщение

Надо сделать, чтобы с помощью вертикальной прокрутки (или горизонтальной) позиция нарисованного прямоугольника менялась... какие это события? очень нужно...

this.Scroll += new System.Windows.Forms.ScrollEventHandler(this.Form1 _Scroll);

Последний раз редактировалось Riccon; 14.11.2007 в 21:37.. Причина: Добавлено сообщение
Riccon вне форума
 
Ответить с цитированием Вверх
Старый 14.11.2007, 23:30   #18
pluton
ViP
 
Аватар для pluton
 
Пол:Мужской
Регистрация: 23.02.2007
Сообщений: 1,027
Репутация: 560
По умолчанию Ответ: Вопросы по C#

EvgeniuXP2, для рисования используется событие Paint.
при прокрутке - событие Scroll
т.е. код приблизительно такой:
Код:
int val;     // значение сдвига скроллбара
form_Paint(object, PaintEventHandler e)
{
    e.Graphics.DrawRectangle(Pens.Black, 10, 10 + val, ...);
}

form_Scroll(object, ScrollEventHandler e)
{
   val = e.NewValue;
}
__________________
THE TRUTH IS OUT THERE
pluton вне форума
 
Ответить с цитированием Вверх
Старый 16.11.2007, 18:01   #19
EvgeniuXP2
Пользователь
 
Пол:Мужской
Регистрация: 15.04.2007
Сообщений: 123
Репутация: 70
По умолчанию Ответ: Вопросы по C#

Цитата:
Сообщение от pluton Посмотреть сообщение
EvgeniuXP2, для рисования используется событие Paint.
при прокрутке - событие Scroll
т.е. код приблизительно такой:
Код:
int val;     // значение сдвига скроллбара
form_Paint(object, PaintEventHandler e)
{
    e.Graphics.DrawRectangle(Pens.Black, 10, 10 + val, ...);
}

form_Scroll(object, ScrollEventHandler e)
{
   val = e.NewValue;
}

Спасибо. Но немного не то что нужно. Нашел в одном из примеров, там решение было простое: при выводе текста использовать вместо координат Х и Y: DisplayedRectangles. Для линии тоже просто написать: Х+DisplayRectangle.X,Y+DisplayRectangle.Y, Х2+DisplayRectangle.X,Y2+DisplayRectangle.Y. И все работает: при прокрутке линии уходят вверх/вниз или влево/вправо, в зависимости от перемещения вертикального/горизонтального ползунка )

Добавлено через 6 минут
Еще вопрос, в книге по C# не нашел, есть только приблизительные наводки

Я нарисовал на форме прямоугольник, нужно в итоге сохранить в jpg/bmp формат. Графический файл загружать и сохранять с другим форматом нашел, а вот преобразовать из векторного в графический нет раньше функция была BitBlt (в делфи тоже есть), а тут вроде как заменили на metafile... но пример из Visual Studio 7.0 не пошел в Visual Studio 8.0 (оно и понятно, там вообще по другому)... в 8.0 примера не нашел , очень нужно...

Добавлено через 4 дня
Вопрос снимаю, чертыре дня убил, но нашел как сделать

Добавлено через 11 минут
пишу на память, так что извиняюсь за ошибки:

Цитата:
Сообщение от pluton Посмотреть сообщение
EvgeniuXP2, подскажи где достать полосу прокрутки?
а то я не нашёл. контрола такого нету. в свойствах формы вроде тоже нельзя включить скроллбары

this.AutoScroll=true;
this.ScrollMinimize. задать размеры например, 1000x1000.

а также указать размер самой формы: this.Width, this.Height.

и на форме появятся скроллы.

Последний раз редактировалось EvgeniuXP2; 18.11.2007 в 11:03.. Причина: Добавлено сообщение
EvgeniuXP2 вне форума
 
Ответить с цитированием Вверх
Старый 18.11.2007, 20:53   #20
pluton
ViP
 
Аватар для pluton
 
Пол:Мужской
Регистрация: 23.02.2007
Сообщений: 1,027
Репутация: 560
По умолчанию Ответ: Вопросы по C#

в c++ можно было так задавать макросы:
Код:
#define func(a, b) (a >= b)
как это сделать в решётке? директивой define можно задавать только символы:
Цитата:
#define lets you define a symbol, so that by using the symbol as the expression passed to the #if directive, the expression will evaluate to true

аналогично в c++ можно было задавать константы:
Код:
#define pi 3.14
в c# можно сделать
Код:
const double pi = 3.14;
как сделать через директивы препроцессора?
__________________
THE TRUTH IS OUT THERE
pluton вне форума
 
Ответить с цитированием Вверх
Старый 19.11.2007, 10:12   #21
Riccon
Неактивный пользователь
 
Пол:Мужской
Регистрация: 20.02.2007
Сообщений: 5
Репутация: 1
По умолчанию Ответ: Вопросы по C#

Цитата:
Сообщение от EvgeniuXP2 Посмотреть сообщение

Добавлено через 4 дня
Вопрос снимаю, чертыре дня убил, но нашел как сделать

Как удалось решить проблему?
Riccon вне форума
 
Ответить с цитированием Вверх
Старый 19.11.2007, 18:05   #22
mikle
Постоялец
 
Пол:Мужской
Регистрация: 25.12.2006
Сообщений: 558
Репутация: 184
По умолчанию Ответ: Вопросы по C#

pluton, С# - это ведь нормальный, современный язык с очень продуманной безопасностью. Поэтому на нем нельзя писать отвратительный небезопасный код, который даже на С++ лет эдак nнадцать уже никто не пишет
mikle вне форума
 
Ответить с цитированием Вверх
Старый 19.11.2007, 20:42   #23
pluton
ViP
 
Аватар для pluton
 
Пол:Мужской
Регистрация: 23.02.2007
Сообщений: 1,027
Репутация: 560
По умолчанию Ответ: Вопросы по C#

Цитата:
Сообщение от mikle Посмотреть сообщение
Поэтому на нем нельзя писать отвратительный небезопасный код

небезопасный код - это в смысле с указателями? его писать на c# можно. имхо, указатели - удобная весчь; может сейчас уже их меньше применяют, потому что есть всякие классы, объекты, авто сборщики мусора, и тд....
и всё таки как сделать макросы? это же безопасный код?
__________________
THE TRUTH IS OUT THERE
pluton вне форума
 
Ответить с цитированием Вверх
Старый 20.11.2007, 18:39   #24
EvgeniuXP2
Пользователь
 
Пол:Мужской
Регистрация: 15.04.2007
Сообщений: 123
Репутация: 70
По умолчанию Ответ: Вопросы по C#

Цитата:
Сообщение от Riccon Посмотреть сообщение
Как удалось решить проблему?

через метафайл. Мне диаграммы нужно хранить в графическом формате, чтобы позже можно было распечатать их... формат emf идеально для этого подоходит - рабочая область в программе может быть ОЧЕНЬ большой (у bmp и jpg - 5000х5000 единиц для 1Гб памяти, у emf - можно выставить и 500 000 х 500 000 и занимать будет 2 кб + ACDSee или Paint его видят и можно сразу печатать как картинку ).

Добавлено через 4 минуты
Цитата:
Сообщение от mikle Посмотреть сообщение
pluton, С# - это ведь нормальный, современный язык с очень продуманной безопасностью. Поэтому на нем нельзя писать отвратительный небезопасный код, который даже на С++ лет эдак nнадцать уже никто не пишет

не совсем продуманный, так, например, если написать код:

boolean m;

If(m=1)

компилятор не воспримет за ошибку

Последний раз редактировалось EvgeniuXP2; 20.11.2007 в 18:44.. Причина: Добавлено сообщение
EvgeniuXP2 вне форума
 
Ответить с цитированием Вверх
Старый 22.11.2007, 19:23   #25
EvgeniuXP2
Пользователь
 
Пол:Мужской
Регистрация: 15.04.2007
Сообщений: 123
Репутация: 70
По умолчанию Ответ: Вопросы по C#

Еще вопрос, как такое сделать?:

Щелкнул левой кнопкой мышки на форме - появился прямоугольник. Щелкнул два раза внутрь прямоугольника, можно корректировать текст. Когда набираю текст, нижняя часть прямоугольника автоматически опускается ниже, если текст стал располагаться в нескольких строках... Интересует текстовое поле, каким объектом его формировать, чтобы узнавать длину, которая не должна превышать ширины прямоугольника....
EvgeniuXP2 вне форума
 
Ответить с цитированием Вверх
Старый 22.11.2007, 20:50   #26
pluton
ViP
 
Аватар для pluton
 
Пол:Мужской
Регистрация: 23.02.2007
Сообщений: 1,027
Репутация: 560
По умолчанию Ответ: Вопросы по C#

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

вот смотри:
код
Цитата:
Сообщение от EvgeniuXP2 Посмотреть сообщение
узнавать длину, которая не должна превышать ширины прямоугольника....

не очень понял этот кусок
__________________
THE TRUTH IS OUT THERE
pluton вне форума
 
Ответить с цитированием Вверх
Старый 24.11.2007, 13:47   #27
EvgeniuXP2
Пользователь
 
Пол:Мужской
Регистрация: 15.04.2007
Сообщений: 123
Репутация: 70
По умолчанию Ответ: Вопросы по C#

незнаю, может я неправильно мыслю

в Word-е можно нарисовать прямоугльник - через фигуры, затем в этот прямоугольник можно добавить текст. Если текст состоит из нескольких строк и эти строки превышают высоту прямоугольника, то в Word-е проблема решена очень просто - не отображать этот текст, пока пользователь сам не изменит высоту прямоугольника.... в моем случае такой номер не пройдет, мне нужно:

создать прямоугольник по умолчанию, в котором можно ввести одну строку, если пользователь набирает и переходит на вторую строку, нижняя граница прямоугольника (его отображаемый контур) смещается ниже и таким образом пользователь может ввести вторую строку и т.д.

реализация:
можно сделать проще, установить моноширный шрифт и отслеживать сколько символов в одной строке и прямоугольник пересоздавать... а если не моноширный шрифт то как тогда проделать?

т.е. нужно постоянно узнавать либо длину строки (при редактировании) хотя бы в пикселях, чтобы отследить превышает ли она ширину прямоугольника и высоту прямоугольника менять автоматически, либо отслеживать пересекаются ли нарисованный прямоугольник и прямоугольник фонта, если да, то менять высоту нарисованного прямоугольника. Только я таких методов незнаю:-1) узнать длину строки в пикселях 2) когда в DrawString отправляю текст и прямоугольник, то я незнаю, сколько же текст на самом деле займет строк, и какая должна быть действительна высота прямоугольника, т.к. текст может полностью не влезть и в конце он может окзаться обрезанным, а мне текст нужно вывести в любом случае полный изменив высоту прямоугольника...

Последний раз редактировалось EvgeniuXP2; 24.11.2007 в 13:56..
EvgeniuXP2 вне форума
 
Ответить с цитированием Вверх
Старый 25.11.2007, 02:08   #28
Svintuss
Неактивный пользователь
 
Аватар для Svintuss
 
Пол:Мужской
Регистрация: 09.01.2007
Сообщений: 71
Репутация: 26
По умолчанию Ответ: Вопросы по C#

Цитата:
Сообщение от EvgeniuXP2 Посмотреть сообщение
незнаю, может я неправильно мыслю

в Word-е можно нарисовать прямоугльник - через фигуры, затем в этот прямоугольник можно добавить текст. Если текст состоит из нескольких строк и эти строки превышают высоту прямоугольника, то в Word-е проблема решена очень просто - не отображать этот текст, пока пользователь сам не изменит высоту прямоугольника.... в моем случае такой номер не пройдет, мне нужно:

создать прямоугольник по умолчанию, в котором можно ввести одну строку, если пользователь набирает и переходит на вторую строку, нижняя граница прямоугольника (его отображаемый контур) смещается ниже и таким образом пользователь может ввести вторую строку и т.д.

реализация:
можно сделать проще, установить моноширный шрифт и отслеживать сколько символов в одной строке и прямоугольник пересоздавать... а если не моноширный шрифт то как тогда проделать?

т.е. нужно постоянно узнавать либо длину строки (при редактировании) хотя бы в пикселях, чтобы отследить превышает ли она ширину прямоугольника и высоту прямоугольника менять автоматически, либо отслеживать пересекаются ли нарисованный прямоугольник и прямоугольник фонта, если да, то менять высоту нарисованного прямоугольника. Только я таких методов незнаю:-1) узнать длину строки в пикселях 2) когда в DrawString отправляю текст и прямоугольник, то я незнаю, сколько же текст на самом деле займет строк, и какая должна быть действительна высота прямоугольника, т.к. текст может полностью не влезть и в конце он может окзаться обрезанным, а мне текст нужно вывести в любом случае полный изменив высоту прямоугольника...

Слушай, а почему бы тебе не использовать скрытый ричтекстбкс(без вывода его на экран), такой же ширины, как и твой прямоугольник. он сам будет дробить текст на строки, и по его свойству Lines ты сможеш определять необходимую высоту твоего прямоугольника.
Может не совсем по канонам ООП, зато работает. Я подобную фичу использую для вывода на печать.

Последний раз редактировалось Svintuss; 25.11.2007 в 02:14..
Svintuss вне форума
 
Ответить с цитированием Вверх
Старый 25.11.2007, 15:10   #29
EvgeniuXP2
Пользователь
 
Пол:Мужской
Регистрация: 15.04.2007
Сообщений: 123
Репутация: 70
По умолчанию Ответ: Вопросы по C#

Цитата:
Сообщение от Svintuss Посмотреть сообщение
Слушай, а почему бы тебе не использовать скрытый ричтекстбкс(без вывода его на экран), такой же ширины, как и твой прямоугольник. он сам будет дробить текст на строки, и по его свойству Lines ты сможеш определять необходимую высоту твоего прямоугольника.
Может не совсем по канонам ООП, зато работает. Я подобную фичу использую для вывода на печать.

Попытка №1:

RichTextBox rtb = new RichTextBox();
rtb.Parent = this;
rtb.Location = new Point(Font.Height, Font.Height);
rtb.Size = new Size(100, 20);
rtb.Anchor |= AnchorStyles.Right;
rtb.Text = "Здесь мой текст, сколько строк он займет?";

и как теперь узнать программно, сколько строк в RichTextBox-е этот текст занял? (свойство Lines возвращает string [1]).

Последний раз редактировалось EvgeniuXP2; 25.11.2007 в 15:27..
EvgeniuXP2 вне форума
 
Ответить с цитированием Вверх
Старый 26.11.2007, 10:01   #30
Svintuss
Неактивный пользователь
 
Аватар для Svintuss
 
Пол:Мужской
Регистрация: 09.01.2007
Сообщений: 71
Репутация: 26
По умолчанию Ответ: Вопросы по C#

Во первых, Location и Anchor тебе не нужны, поскольку текстбокс не выводится на экран (ну да это мелочи).
Во вторых, хорошо бы еще задать шрифт, а то он по умолчанию кажется 8-й ставит и даже очень длинные фразы может уместить в одну строку.
В третих, Lines возвращает массив строк, на которые текстбокс порезал твой текст. Т.е. количество строк узнается "rtb.Lines.Length". Т.к. фраза короткая, то он уместил ее в одну строку, что и вернул.
В целях отладки можно этот текстбокс все-таки гденить вывести на экран, потом в окончательном варианте скроеш.

Последний раз редактировалось Svintuss; 26.11.2007 в 10:10..
Svintuss вне форума
 
Ответить с цитированием Вверх
Ответ


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вопросы TOPGAN Скорая помощь 4 14.09.2009 18:25
Вопросы по Win Api :-)) frostmourne Скорая помощь 15 27.02.2009 17:26

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 05:26. Часовой пояс GMT +3.


Copyright ©2004 - 2024 2BakSa.WS

Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2024, vBulletin Solutions, Inc. Перевод: zCarot
Время генерации страницы 0.22211 секунды с 11 запросами