Форум программистов, компьютерный форум, киберфорум
Java: GUI, графика
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
 Аватар для SAZl
2 / 9 / 0
Регистрация: 12.10.2011
Сообщений: 173

Как отсечь линии, которые выходят за границу окна?

17.03.2014, 21:33. Показов 1514. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как отсечь линии, которые выходят за границу окна? Например, есть фигура, но некоторые ее части выходят за экран, как их обрезать. Уже есть код окна:
Java
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
30
31
32
public class General extends JFrame
{
    public static final long serialVersionUID = 1L;
    public General()
    {
        super();
        setSize( 400,300 );
        addWindowListener(new WindowAdapter()
        {
        
            public void windowClosing(WindowEvent e)
            {
                dispose();
                System.exit(0);
            }
        });
        setVisible( true );
    }
    double pi =3.141592653589793;
    int X__max, Y__max;   
    float x_max = 10;
    float y_max=7;
    int X_max=this.getWidth(); 
    int Y_max=this.getHeight();
    public int IX(float x) {  return (int)(x*(this.getWidth()/x_max)+0.5); }
    public int IY(float y) {  return (int)(Y_max-(y*(this.getHeight()/y_max)+0.5)); }
    }
    public static void main(String args[])
    {
        new General();
    }
}
Как для примера не обязательно нужно чертить какой-нибудь многоугольник, достаточно одной линии.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
17.03.2014, 21:33
Ответы с готовыми решениями:

Блоки выходят за границу другого блока
Здраствуйте. Такая проблема: вложенные блоки выходят за границу блока, объединяющего их. <div id="catalog"> <div...

Работа с Word.Application. Как игнорировать сообщение "Поля выходят за границу печати"?
При печате документа из программы появляется сообщение 'Поля выходят за границы печати. Продолжить?' Мне нужно программно предотвратить...

Как определить нижню границу видимой части окна?
Существует окно с вертикальной полосой прокрутки. Раз с полосой прокрутки, значит ясно дело все окно целиком не отображается. А вот как...

7
 Аватар для dwarf
5 / 5 / 1
Регистрация: 04.03.2014
Сообщений: 20
18.03.2014, 06:43
Цитата Сообщение от SAZl Посмотреть сообщение
Как отсечь линии, которые выходят за границу окна?
А зачем? Их ведь и так не должно быть видно. Кстати, в вашем примере ничего же не рисуется
0
 Аватар для SAZl
2 / 9 / 0
Регистрация: 12.10.2011
Сообщений: 173
18.03.2014, 15:53  [ТС]
Да будет не видно, но ведь алгоритма отсечения нету, например треугольник будет виден наполовину, та часть которую не видно никуда не денется, она останется за экраном, вот это и нужно избежать. Насчет того что ничего не рисуется - уже писал, что достаточно одной линии, а это g.draw(new Line2D.Double(x, y, 200, 200)); <- как пример.
0
127 / 131 / 11
Регистрация: 25.12.2011
Сообщений: 443
23.03.2014, 03:57
Цитата Сообщение от SAZl Посмотреть сообщение
часть которую не видно никуда не денется, она останется за экраном, вот это и нужно избежать
А как именно это нужно избежать?
0
 Аватар для SAZl
2 / 9 / 0
Регистрация: 12.10.2011
Сообщений: 173
23.03.2014, 10:44  [ТС]
Приведу пример. Я предполагаю, что так: есть экран 7 (длина) на 10 (ширина), в нем есть линия длиной 8 (нарисована по вертикали) и то что выходит за границу экрана, а это между 7 и 8 по длине и нужно удалить. Как-то так. Если непонятно предлагаю взглянуть на рисунок:
Миниатюры
Как отсечь линии, которые выходят за границу окна?  
0
 Аватар для SAZl
2 / 9 / 0
Регистрация: 12.10.2011
Сообщений: 173
29.03.2014, 19:45  [ТС]
А что если просто конечную точку линии перенести к границе экрана? Что думаете? Вроде просто, сдвиг точки и все. Предлагаю взглянуть на рис. для наглядности. Думаю это самый простой способ, видел в комментах на нескольких форумах об этой идее.
Миниатюры
Как отсечь линии, которые выходят за границу окна?  
0
127 / 131 / 11
Регистрация: 25.12.2011
Сообщений: 443
29.03.2014, 21:02
Цитата Сообщение от SAZl Посмотреть сообщение
то что выходит за границу экрана, а это между 7 и 8 по длине и нужно удалить
Не понятно зачем это нужно делать. Система отрисовки (Java2D или OpenGL) сами все эти отсечения делают. Если нужно отсекать не за границей экрана, то можно задать маску для отрисовки и библиотека опять сама будет все отсекать.

Если уж так хочется самому все отсекать, то можно начать с http://en.wikipedia.org/wiki/C... _algorithm
1
 Аватар для SAZl
2 / 9 / 0
Регистрация: 12.10.2011
Сообщений: 173
29.03.2014, 21:09  [ТС]
В том то и дело хотелось бы обойтись без библиотек!

Добавлено через 4 минуты
за ссылку. Это именно то что надо. Буду разбираться.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
29.03.2014, 21:09
Помогаю со студенческими работами здесь

Как оперировать с числами которые выходят за рамки int
У меня такая проблема, мне нужно оперировать с такими числами 57^59, как мне это сделать??? Ест библиотека какая нибудь?

Некоторые окружности выходят за границы окна
Код: PROGRAM kalejdaskop; USES graphABC; TYPE kale = record x, y, xx,

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

Вывести на экран таблицу всех значений суммы, которые не выходят за пределы диапазона
Пользователь вводит целое положительное число n. Найти значение суммы 1^(2n-1) + 2^(2n-3) + 3^(2n-5) + ... + (n-1)^3+ n^1 Вывести на...

Заданы трехмерные вектора а,в,с, которые выходят из точки O(x,y,z), и есть ребрами для тетраэдра ОАВС. Вычесли
Заданы трехмерные вектора а,в,с, которые выходят из точки О(x,y,z), и есть ребрами для тетраэдра ОАВС. Вычеслить двугранный угол возле...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru