Конференция "Media" » Лупа [D7, WinXP]
 
  • faustpatron13 © (26.10.10 22:12) [0]
    Уважаемые программисты!

    Киньте, пожалуйста, код или подскажите как реализовать увеличительное стекло в Delphi. Нарыл какую-то муру, но у меня ничего не получается...
  • faustpatron13 © (26.10.10 23:51) [1]
    Мне нужно реализовать такой инструмент: нажал на кнопку, включилось увеличительное стекло, поводил им по Image1, а увеличение передалось на рядом стоящую Panel1, ну или на другой Image2, но чтобы увеличивало только заданый Image1, а не всю форму...
  • 0x00FF00 © (28.10.10 00:42) [2]
    BitBlt + StretchBlt?
  • И. Павел © (28.10.10 10:57) [3]
    В библиотеке alphacontrols есть компонент, отображающий увеличительное стекло.
  • Чайник © (03.11.10 22:40) [4]
    Когда-то для тренировки тоже развлекался подобной задачкой:

    http://ifolder.ru/20098568

    P.S. В 2003 это было дельфи 6
  • faustpatron13 © (06.11.10 12:18) [5]
    Чайник спасибо!

    А не могли бы вы мне рассказать, как пашет вот эта прога:

    http://www.delphisources.ru/pages/sources/graph/zoom.html

    Код смотрю, нишиша не могу понять((
  • Чайник © (06.11.10 17:40) [6]

    > А не могли бы вы мне рассказать, как пашет вот эта прога:
    > http://www.delphisources.ru/pages/sources/graph/zoom.htmlКод
    > смотрю, нишиша не могу понять((


    А что там непонятного?
    На форме лежат друг на друге панель (Panel1) и имейдж (Image1). В зависимости от того, где находится курсор, делаются видимым или панель с настройками (если курсор над формой) или имейдж (если курсор вне формы).
    По таймеру с интервалом 25 мс (если курсор вне формы) запрашивается хэндл десктопа и из него прямоугольник копируется с растяжкой на имейдж.
    Ключевой момент, где все это происходит, вот :

        C:=TCanvas.Create;
         try
          C.Handle:=GetDC(GetDesktopWindow);
          Image1.Canvas.CopyRect(Drect,C,Srect);
         finally
          C.Free;
         end;



    Все остальное - это вычисление координат прямоугольника экрана, из которого копируется изображение.
    На мой взгляд реализовано все довольно перректальным способом (40 раз в секунду создавать и разрушать TCanvas), но, как говорится, на вкус и цвет...
  • Чайник © (06.11.10 17:47) [7]
    Да! только счас посмотрел в собственный проект, и увидел, что там использовал DsfancyButton - кнопка, которую можно делать разной формы (круглую). Взято здесь: http://www.torry.net/quicksearchd.php?String=DsFancyButton&Title=Yes
  • CrytoGen (06.11.10 19:56) [8]
    только не забудьте освободить DC
  • faustpatron13 © (06.11.10 23:04) [9]

    > Чайник ©   (06.11.10 17:47) [7]


    > Да! только счас посмотрел в собственный проект, и увидел,
    >  что там использовал DsfancyButton - кнопка, которую можно
    > делать разной формы (круглую). Взято здесь: http://www.torry.
    > net/quicksearchd.php?String=DsFancyButton&Title=Yes


    А зачем мне это?
  • Студент (03.02.11 13:20) [10]
    Увеличение участка изображения и "лупа" это разные вещи...
    Лупа увеличивает в разное количество раз в зависимости от радиуса...
  • babanyukv (09.11.13 00:53) [11]
    Не легкий момент.
    __________________
    http://lescon.su/planket/
 
Конференция "Media" » Лупа [D7, WinXP]
Есть новые Нет новых   [134427   +37][b:0][p:0.001]