Правила Форума редакция от 22.06.2020 |
|
|
|
|
|
Опции темы | Опции просмотра | Language |
14.11.2007, 21:26 | #16 |
Ответ: Вопросы по C#
EvgeniuXP2, подскажи где достать полосу прокрутки?
а то я не нашёл. контрола такого нету. в свойствах формы вроде тоже нельзя включить скроллбары
__________________
THE TRUTH IS OUT THERE |
|
Реклама: | круизы по волге 2024 расписание и цены на теплоходы из москвы | трейнеры для зубов - цена | гигиена зубов стоимость | решетка вентиляционная 300х1500 | букет большой |
14.11.2007, 21:32 | #17 | |||||||||||||||||||||||
Неактивный пользователь
Пол: Регистрация: 20.02.2007
Сообщений: 5
Репутация: 1
|
Ответ: Вопросы по C#
Свойство у формы или контрола Panel - AutoScroll
Добавлено через 5 минут
this.Scroll += new System.Windows.Forms.ScrollEventHandler(this.Form1 _Scroll); Последний раз редактировалось Riccon; 14.11.2007 в 21:37.. Причина: Добавлено сообщение |
|||||||||||||||||||||||
14.11.2007, 23:30 | #18 |
Ответ: Вопросы по 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 |
|
16.11.2007, 18:01 | #19 | |||||||||||||||||||||||
Пользователь
Пол: Регистрация: 15.04.2007
Сообщений: 123
Репутация: 70
|
Ответ: Вопросы по C#
Спасибо. Но немного не то что нужно. Нашел в одном из примеров, там решение было простое: при выводе текста использовать вместо координат Х и 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 минут пишу на память, так что извиняюсь за ошибки:
this.AutoScroll=true; this.ScrollMinimize. задать размеры например, 1000x1000. а также указать размер самой формы: this.Width, this.Height. и на форме появятся скроллы. Последний раз редактировалось EvgeniuXP2; 18.11.2007 в 11:03.. Причина: Добавлено сообщение |
|||||||||||||||||||||||
18.11.2007, 20:53 | #20 | |||||||||||||||||||
Ответ: Вопросы по C#
в c++ можно было так задавать макросы:
Код:
#define func(a, b) (a >= b)
аналогично в c++ можно было задавать константы: Код:
#define pi 3.14 Код:
const double pi = 3.14;
__________________
THE TRUTH IS OUT THERE |
||||||||||||||||||||
19.11.2007, 10:12 | #21 |
Неактивный пользователь
Пол: Регистрация: 20.02.2007
Сообщений: 5
Репутация: 1
|
Ответ: Вопросы по C#
|
19.11.2007, 18:05 | #22 |
Постоялец
Пол: Регистрация: 25.12.2006
Сообщений: 558
Репутация: 184
|
Ответ: Вопросы по C#
pluton, С# - это ведь нормальный, современный язык с очень продуманной безопасностью. Поэтому на нем нельзя писать отвратительный небезопасный код, который даже на С++ лет эдак nнадцать уже никто не пишет
|
19.11.2007, 20:42 | #23 | |||||||||||||||||||||||
Ответ: Вопросы по C#
небезопасный код - это в смысле с указателями? его писать на c# можно. имхо, указатели - удобная весчь; может сейчас уже их меньше применяют, потому что есть всякие классы, объекты, авто сборщики мусора, и тд.... и всё таки как сделать макросы? это же безопасный код?
__________________
THE TRUTH IS OUT THERE |
||||||||||||||||||||||||
20.11.2007, 18:39 | #24 | ||||||||||||||||||||||||||||||||||||||||||||||
Пользователь
Пол: Регистрация: 15.04.2007
Сообщений: 123
Репутация: 70
|
Ответ: Вопросы по C#
через метафайл. Мне диаграммы нужно хранить в графическом формате, чтобы позже можно было распечатать их... формат emf идеально для этого подоходит - рабочая область в программе может быть ОЧЕНЬ большой (у bmp и jpg - 5000х5000 единиц для 1Гб памяти, у emf - можно выставить и 500 000 х 500 000 и занимать будет 2 кб + ACDSee или Paint его видят и можно сразу печатать как картинку ). Добавлено через 4 минуты
не совсем продуманный, так, например, если написать код: boolean m; If(m=1) компилятор не воспримет за ошибку Последний раз редактировалось EvgeniuXP2; 20.11.2007 в 18:44.. Причина: Добавлено сообщение |
||||||||||||||||||||||||||||||||||||||||||||||
22.11.2007, 19:23 | #25 |
Пользователь
Пол: Регистрация: 15.04.2007
Сообщений: 123
Репутация: 70
|
Ответ: Вопросы по C#
Еще вопрос, как такое сделать?:
Щелкнул левой кнопкой мышки на форме - появился прямоугольник. Щелкнул два раза внутрь прямоугольника, можно корректировать текст. Когда набираю текст, нижняя часть прямоугольника автоматически опускается ниже, если текст стал располагаться в нескольких строках... Интересует текстовое поле, каким объектом его формировать, чтобы узнавать длину, которая не должна превышать ширины прямоугольника.... |
22.11.2007, 20:50 | #26 | ||||||||||||||||||||||||||||||||||||||||||||||
Ответ: Вопросы по C#
вот смотри: код
не очень понял этот кусок
__________________
THE TRUTH IS OUT THERE |
|||||||||||||||||||||||||||||||||||||||||||||||
24.11.2007, 13:47 | #27 |
Пользователь
Пол: Регистрация: 15.04.2007
Сообщений: 123
Репутация: 70
|
Ответ: Вопросы по C#
незнаю, может я неправильно мыслю
в Word-е можно нарисовать прямоугльник - через фигуры, затем в этот прямоугольник можно добавить текст. Если текст состоит из нескольких строк и эти строки превышают высоту прямоугольника, то в Word-е проблема решена очень просто - не отображать этот текст, пока пользователь сам не изменит высоту прямоугольника.... в моем случае такой номер не пройдет, мне нужно: создать прямоугольник по умолчанию, в котором можно ввести одну строку, если пользователь набирает и переходит на вторую строку, нижняя граница прямоугольника (его отображаемый контур) смещается ниже и таким образом пользователь может ввести вторую строку и т.д. реализация: можно сделать проще, установить моноширный шрифт и отслеживать сколько символов в одной строке и прямоугольник пересоздавать... а если не моноширный шрифт то как тогда проделать? т.е. нужно постоянно узнавать либо длину строки (при редактировании) хотя бы в пикселях, чтобы отследить превышает ли она ширину прямоугольника и высоту прямоугольника менять автоматически, либо отслеживать пересекаются ли нарисованный прямоугольник и прямоугольник фонта, если да, то менять высоту нарисованного прямоугольника. Только я таких методов незнаю:-1) узнать длину строки в пикселях 2) когда в DrawString отправляю текст и прямоугольник, то я незнаю, сколько же текст на самом деле займет строк, и какая должна быть действительна высота прямоугольника, т.к. текст может полностью не влезть и в конце он может окзаться обрезанным, а мне текст нужно вывести в любом случае полный изменив высоту прямоугольника... Последний раз редактировалось EvgeniuXP2; 24.11.2007 в 13:56.. |
25.11.2007, 02:08 | #28 | |||||||||||||||||||||||
Ответ: Вопросы по C#
Слушай, а почему бы тебе не использовать скрытый ричтекстбкс(без вывода его на экран), такой же ширины, как и твой прямоугольник. он сам будет дробить текст на строки, и по его свойству Lines ты сможеш определять необходимую высоту твоего прямоугольника. Может не совсем по канонам ООП, зато работает. Я подобную фичу использую для вывода на печать. Последний раз редактировалось Svintuss; 25.11.2007 в 02:14.. |
||||||||||||||||||||||||
25.11.2007, 15:10 | #29 | |||||||||||||||||||||||
Пользователь
Пол: Регистрация: 15.04.2007
Сообщений: 123
Репутация: 70
|
Ответ: Вопросы по C#
Попытка №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.. |
|||||||||||||||||||||||
26.11.2007, 10:01 | #30 |
Ответ: Вопросы по C#
Во первых, Location и Anchor тебе не нужны, поскольку текстбокс не выводится на экран (ну да это мелочи).
Во вторых, хорошо бы еще задать шрифт, а то он по умолчанию кажется 8-й ставит и даже очень длинные фразы может уместить в одну строку. В третих, Lines возвращает массив строк, на которые текстбокс порезал твой текст. Т.е. количество строк узнается "rtb.Lines.Length". Т.к. фраза короткая, то он уместил ее в одну строку, что и вернул. В целях отладки можно этот текстбокс все-таки гденить вывести на экран, потом в окончательном варианте скроеш. Последний раз редактировалось Svintuss; 26.11.2007 в 10:10.. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Вопросы | TOPGAN | Скорая помощь | 4 | 14.09.2009 18:25 |
Вопросы по Win Api :-)) | frostmourne | Скорая помощь | 15 | 27.02.2009 17:26 |
|
|