Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.10.2009, 16:32   #1
Nub83
 
Регистрация: 08.10.2009
Сообщений: 6
По умолчанию Линия на мониторе без формы

Нужно чтоб на мониторе отображалась линия и ее можно было бы перемещать и вращать вокруг оси. Ну допустим линия и посередине кружок либо квадратик чтоб можно было перемешать. Если потянуть за концы то линия бы вращалась вокруг этого квадратика/ Вопросов много как это все организовать. Как вывести изображение прямой без формы
Nub83 вне форума Ответить с цитированием
Старый 08.10.2009, 16:41   #2
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

эт вам OSD модуль...
с регионами сталкивались?

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

пы-сы: а зачем таке надо, уж не в контре стрелять?
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 08.10.2009, 16:48   #3
Вадим Буренков
Участник клуба
 
Аватар для Вадим Буренков
 
Регистрация: 06.03.2009
Сообщений: 1,346
По умолчанию

Тебе надо рисовать прям на экране? Я читал "Михаил Краснов: OpenGL. Графика в проектах Delphi", там в начале книги про это есть. По поводу поворотов линии то это рассчитывается с помощю формул при знании геометрии.
Вадим Буренков вне форума Ответить с цитированием
Старый 08.10.2009, 16:52   #4
Nub83
 
Регистрация: 08.10.2009
Сообщений: 6
По умолчанию

Нет на экране рисовать не надо. Линия уже должна быть
Nub83 вне форума Ответить с цитированием
Старый 08.10.2009, 16:54   #5
Вадим Буренков
Участник клуба
 
Аватар для Вадим Буренков
 
Регистрация: 06.03.2009
Сообщений: 1,346
По умолчанию

Цитата:
Как вывести изображение прямой без формы
Цитата:
Линия уже должна быть
Где она должна быть, кроме как на форме?
Вадим Буренков вне форума Ответить с цитированием
Старый 08.10.2009, 17:15   #6
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

вот вам простейший osd...

а по-поводу- "Линия на мониторе без формы"
- переформулируйте вопрос, где, в чем, на чем... можно действительно в opengl или на directx заюзать
Вложения
Тип файла: zip простейший OSD.zip (1.7 Кб, 30 просмотров)
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation

Последний раз редактировалось raxp; 08.10.2009 в 17:18.
raxp вне форума Ответить с цитированием
Старый 08.10.2009, 22:03   #7
Nub83
 
Регистрация: 08.10.2009
Сообщений: 6
По умолчанию

Цитата:
Сообщение от raxp Посмотреть сообщение
вот вам простейший osd...
Вот это то что нужно. Еще нужно чтоб можно было брать за края и вертеть мышкой. Ну типа мельницы. Самая линия просто чтоб была по верх всех окон.

Последний раз редактировалось Nub83; 08.10.2009 в 22:07.
Nub83 вне форума Ответить с цитированием
Старый 08.10.2009, 22:17   #8
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

Цитата:
Вот это то что нужно. Еще нужно чтоб можно было брать за края и вертеть мышкой. Ну типа мельницы. Самая линия просто чтоб была по верх всех окон.
- чтоб брать за края, добавьте обработку mousemove и координат курсора, как токо доходит до края, ну +-5px, то меняйте вид курсора на другой для удобства и обрабатывайте зажатие левой кнопки, це в вас будет начало растягивания-стягивания, а потом по move курсора змiнюйте размер формы...
что касается поверх всех, то почитайте тут http://www.programmersforum.ru/showthread.php?t=65246
(там выкладывал пример для этого случая)
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 08.10.2009, 22:39   #9
Nub83
 
Регистрация: 08.10.2009
Сообщений: 6
По умолчанию

Цитата:
Сообщение от raxp Посмотреть сообщение
- чтоб брать за края, добавьте обработку mousemove и координат курсора, как токо доходит до края, ну +-5px, то меняйте вид курсора на другой для удобства и обрабатывайте зажатие левой кнопки, це в вас будет начало растягивания-стягивания, а потом по move курсора змiнюйте размер формы...
Что то не вертиться она у меня....Не обязательно чтоб во круг оси крутилось. Можно так чтоб один край допустим перемешать вверх вниз другой чтоб стоял на точке.
p.s Не вижу где плюсик ставить..

Последний раз редактировалось Nub83; 08.10.2009 в 22:55.
Nub83 вне форума Ответить с цитированием
Старый 08.10.2009, 23:03   #10
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

плюсик поставить- весы слева на пользователе...

...чтоб вертелась, нужно поступить иначе изначально- нужно просто рисовать линию на форме, лучше на TImage, а потом регионами обрезать форму по фоновому цвету, линия и останется... как пример - http://raxp.radioliga.com/cnt/s.php?p=cl.zip
Код:
function Tosdf.BitmapToRegion(Bitmap: TBitmap; TransColor: TColor): HRGN;
var X, Y, XStart: smallint;
    temp:integer;
begin
 Result := 0;
 with Bitmap do
 for Y := 0 to Height - 1 do
  begin
   X := 0;
   while X < Width do
    begin
     while (X < Width) and (Canvas.Pixels[X, Y] = TransColor) do
      Inc(X);
      if X >= Width then Break;
      XStart := X;
      while (X < Width) and (Canvas.Pixels[X, Y] <> TransColor) do
       Inc(X);
      if Result = 0 then
       Result := CreateRectRgn(XStart, Y, X, Y + 1)
      else temp:=CreateRectRgn(XStart, Y, X, Y + 1);
      CombineRgn(Result, Result,temp, RGN_OR);
      DeleteObject(Temp);
    end
  end
end;
//
procedure Tosdf.rgn(cb:Tcolor);
var Rgn: integer;
begin
 Rgn:= BitmapToRegion(img.Picture.Bitmap,cb);
 SetWindowRgn(Handle, Rgn, True);
 DeleteObject(Rgn)
end;
- image отрисовываейте заранее, а потом обновляйте rgn по-завершении рисования, обработка перемещения такая-же
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
TTImer без формы. Lime Помощь студентам 11 29.09.2009 13:54
Полоса на ЖК мониторе Скандербег Компьютерное железо 0 23.08.2009 22:45
Программа без формы Чугусов Общие вопросы Delphi 3 14.02.2009 14:56
Программа без оболочки/формы/GUI aqwapaq Общие вопросы Delphi 5 12.02.2008 12:04
Приложение без формы Wiggle Общие вопросы Delphi 12 18.04.2007 20:20