Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Программирование под Windows > C++ Builder
Перезагрузить страницу Выделение мышью рабочего стола
Ответ
 
Опции темы Опции просмотра
  (#16 (permalink)) Старый
MaMaV MaMaV вне форума
Member
 
Сообщений: 1,984
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 21.09.2005
По умолчанию 07.12.2005, 18:33

вот одно из возможных решений:
В обработчике движения мышью, впишите следующие строки
Код:
Image1->Picture->Bitmap->Canvas->Brush->Style=bsClear;
Image1->Picture->Bitmap->LoadFromFile(OpenPictureDialog1->FileName);
первая строка устанавливает стиль содержания рисуемого прямоугольника на "чистый", то есть прозрачный, второй строкой я загружаю открытй мною ранее рисунок, чтобы зарисовать следы от движения прямоугольника (когда мышью его тянем).
Вот исходник программы для BCB 6.0, она рабочая, только что написанная.
http://www.chat.ru/~mamav/dlia_foruma.rar Правда без коменнтариев. У кого есть желание посмотрите, она не сложная.
Ответить с цитированием
  (#17 (permalink)) Старый
Dругая Dругая вне форума
Member
 
Сообщений: 17
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 24.11.2005
По умолчанию 08.12.2005, 17:17

Почему при движении мышки вниз или вправо остается старый след, а при движении вверх или влево - нет?

Код:
void __fastcall TForm1::Image2MouseDown(TObject *Sender,
      TMouseButton Button, TShiftState Shift, int X, int Y)
{
        short i,j;
        for (i=0;i<n1;i++)
        for (j=0;j<np;j++)
                {
                Form1->Image2->Canvas->Pixels[j][i]=ChooseCol(mm,i,j);
                }
        Form1->Image2->Picture->Bitmap->Canvas->Pen->Color=clRed;
        nachX=X;
        nachY=Y;
        sost=1;
        Form1->TrackBar1X->Position=X;
        Form1->TrackBar2Y->Position=Y;
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Image2MouseUp(TObject *Sender, TMouseButton Button,
      TShiftState Shift, int X, int Y)
{
        int i,j;
        for (i=0;i<n1;i++)
        for (j=0;j<np;j++)
                {
                Form1->Image2->Canvas->Pixels[j][i]=ChooseCol(mm,i,j);
                }
        Form1->Image2->Picture->Bitmap->Canvas->Pen->Color=clGreen;
        Form1->Image2->Picture->Bitmap->Canvas->Rectangle(nachX,nachY,X,Y);
        //Label3->Caption=X;
        //Label4->Caption=Y;
        sost=0;
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Image2MouseMove(TObject *Sender, TShiftState Shift,
      int X, int Y)
{
        int i=0,j=0;
        if (sost==1)
        {
                int a,b;
                if (nachY[list=1]Caption=a;
                Label4->Caption=b;
                for (i=a;i<b+1;i++)
                Form1->Image2->Canvas->Pixels[oldX][i]=ChooseCol(mm,i,oldX);
                if (nachX[list=1]Image2->Canvas->Pixels[j][oldY]=ChooseCol(mm,oldY,j);
                Form1->Image2->Picture->Bitmap->Canvas->Pen->Color=clRed;
                Form1->Image2->Picture->Bitmap->Canvas->Rectangle(nachX,nachY,X,Y);
                Image2->Picture->Bitmap->Canvas->Brush->Style=bsClear;
                oldX=X;
                oldY=Y;
        }
}
Ответить с цитированием
  (#18 (permalink)) Старый
MaMaV MaMaV вне форума
Member
 
Сообщений: 1,984
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 21.09.2005
По умолчанию 08.12.2005, 18:22

Ответ очень простой и логичный... просто подумайте.
Ответить с цитированием
  (#19 (permalink)) Старый
Dругая Dругая вне форума
Member
 
Сообщений: 17
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 24.11.2005
По умолчанию 14.12.2005, 16:37

2 MaMaV
А от мерцания как-нить можно избавиться? Из-за чего оно возникает?
Ответить с цитированием
  (#20 (permalink)) Старый
MaMaV MaMaV вне форума
Member
 
Сообщений: 1,984
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 21.09.2005
По умолчанию 14.12.2005, 22:40

Цитата:
Originally posted by Dругая
[b]2 MaMaV
А от мерцания как-нить можно избавиться? Из-за чего оно возникает?
Мерцание обусловлено постоянной перезагрузкой изображения... Конечно можно от него избавтиься понизив частоту монитора, но это не выход.
Ответить с цитированием
Ads.
Ads
Ответ

Опции темы
Опции просмотра

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
изображение рабочего стола v1vas1liiy Любые вопросы от новичков 2 26.02.2012 16:09
WinCE 6: оформление рабочего стола zukker Windows CE 0 08.02.2012 12:54
Папка рабочего стола у vista Илья01 Windows Vista 1 20.04.2011 07:42
Ярлыки рабочего стола. Katrina_ Любые вопросы от новичков 3 12.12.2010 16:31
Автоматизация рабочего стола Gatfather Вопросы начинающих программистов 11 02.10.2009 18:56
Не удаляется ярлык с рабочего стола. zolotoj Любые вопросы от новичков 2 07.01.2009 13:10
Удалились данные с рабочего стола ICE0 Компьютерная безопасность 6 16.09.2008 14:43
Выбор темы для рабочего стола Olega Разное 0 27.08.2008 01:58
Папка рабочего стола Puccini WinAPI 2 15.02.2006 20:28
Фон рабочего стола Glebische Visual Basic 0 23.10.2005 17:05
Создание рабочего стола на С++ anzor C++ Builder 2 25.07.2004 02:16



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов