Program do testowania myszki

0

Witam serdecznie mam pytanko otoz pisze sobie programik do testowania myszki typu klikamy prawym podswietla sie prawy klawisz myszki krecimy kolkiem pojawia sie strzalka w dol lub w gore ... w chwili obecnej zrobilem to tak iz jesli kliknie sie prawy to pojawia sie drugi obrazek z zaznaczonym prawym klawiszem myszki jesli lewy to laduje sie inny obrazek itd itd. Myslalem ze da sie to tak zrobic niestety problem pojawia sie gdy sa 2 wcisniete guziki naraz. Moze macie pomysl jak to zrobic inaczej ?? Ewentualnie nakierujecie mnie na jakies FAQ albo cos bo w sumie sa to moje pierwsze kroki w C#. Pozdrawiam

0

Tzn. problem masz z obsluga myszy czy prezentowaniem obrazkow. Jesli z tym pierwszym, to jaki problem? Jesli z tym drugim, to zmien temat, bo wcale o mysz nie pytasz. Sprecyzuj.

Wyprzedzajac Twoje pytania o obrazki, czemu na przyklad nie przygotujesz 4 obrazkow:

jesli (przycisk lewy)
{
jesli (przycisk prawy)
obrazekLP
else
obrazekL
}
else
{
jesli (przycisk prawy)
obrazekP
else
obrazek_brak
}

0

Może umieść zmienną która będzie monitorować stan klawiszy (czy są wciśnięte).
Przy wciśnięciu "zapalaj" tą zmienną, a przy zwolnieniu przypisuj 0.
Jednocześnie przy każdym z tych zdarzeń odrysowywuj w zależności od stanu jeden albo dwa rysunki.

0

Nie mam problemu z obsluga myszy raczej wlasnie z tymi obrazkami na teraz mam przygotowane 3 obrazki ten glowny standardowy obrazek left gdzie jest zaznaczony wcisniety klawisz lewy i podobnie obrazek prawy gdzie jest wcisniety obrazek prawy. Dokladnie kod wyglada tak: (wersja robocza)

private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Left)
                pictureBox1.Image = Image.FromFile("c:\\left.gif");
            if (e.Button == MouseButtons.Right)
                pictureBox1.Image = Image.FromFile("c:\\right.gif");
        }

        private void pictureBox1_MouseUp(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Left)
                pictureBox1.Image = Image.FromFile("c:\\standard.gif");
            if (e.Button == MouseButtons.Right)
                pictureBox1.Image = Image.FromFile("c:\\standard.gif");
        }

Niestety tak jak pisalem wczesniej problem pojawia sie gdy np mam wcisniete oba klawisze bo musialbym przygotowac jeszcze jeden obrazek z zaznaczonymi przyciskami lewym i prawym. Dodajmy do tego przycisk srodkowy i scrola to daje nam to kilkanascie roznych kombinacji... Czy mam robic te kilkanascie roznych obrazkow czy macie jakis inny pomysl na to ?? Np na zdeklarowanie jakiegos obiektu nalozenie innych pictureboxow z wlasciwosciami visible (tyle ze wtedy jego kwadratura jest problemem) czy moze jeszcze jakies inne pomysly macie??

0

Zrób kilka obrazków leżących obok siebie / na sobie. Każdy z nich będzie miał 2 możliwe stany. Poza tym 16 różnych obrazków na każdą możliwość to wcale nie taki głupi pomysł, gdyż możliwości graficzne są dużo większe. Ale jak nie potrzebujesz to nie ma sensu.

I nie ładuj za każdym razem obrazka z pliku na nowo ! Zładuj wszystko na starcie programu.

Taka klasa się przyda:

class ObrazekKlawisza : PictureBox
{
   private bool wcisniety = false;
   private Image obrazekZwolnionego = null;
   private Image obrazekWcisnietego = null;

   public ObrazekKlawisza() { }

   public ObrazekKlawisza(Image obrazekZwolnionego, Image obrazekWcisnietego)
   {
      this.obrazekZwolnionego = obrazekZwolnionego;
      this.obrazekWcisnietego = obrazekWcisnietego;
      this.Image = obrazekZwolnionego;
   }

   public ObrazekKlawisza(string plikZwolnionego, string plikWcisnietego)
      : this(Image.FromFile(plikZwolnionego), Image.FromFile(plikWcisnietego)) { }

   public Image ObrazekZwolnionego 
   { 
      get { return obrazekZwolnionego; } 
      set 
      { 
         if(!Wcisniety) this.Image = value; 
         obrazekZwolnionego = value; 
      } 
   }

   public Image ObrazekWcisnietego
   { 
      get { return obrazekWcisnietego; } 
      set 
      { 
         if(Wcisniety) this.Image = value; 
         obrazekWcisnietego = value; 
      } 
   }
   
   public bool Wcisniety 
   { 
      get { return wcisniety; }
      set
      { 
         this.Image = value ? obrazekWcisnietego : obrazekZwolnionego; 
         wcisniety = value; 
      }
   }
}

Aby zmienić leżące na formie PictureBox w ObrazekKlawisza otwórz plik .designer.cs i pozmieniaj odpowiednie "PictureBox" na "ObrazekKlawisza".

0

adf88 tak wlasnie chcialem zrobic zeby ustawic obrazek tlo (standard) a potem ustawic kilka obrazkow (np obrazek zaznaczonego prawego lub lewego klawisza) na tym glownym w odpowiednich miejsacch z wartosciami visible na false a potem jesli wcisniete to visible na true itd itd problem w tym ze nie wiem jak zrobic zeby na tym obrazku co jest wyzej (zaznaczone klawisze) pojawial sie sam obrazek bez kwadratowego pictureboxa. Wystarczy ze w jakims programie graficznym ustawie obrazek bez tla i pokaze sie sam obrazek ??

0

Możesz to zrobić tak, że obrazek na górze ma takie samo tło jak obrazek pod spodem, więc jak będzie go pokrywać to i tak będzie widać to co trzeba:

na spód: user image na górę (lewy klawisz): user image

0

No w sumie tez racja wielkie dzieki mam jeszcze pytanko bo na razie czytalem tylko o kotwicach, dokach itd jak mniemam wszystkie te obrazki musze tak samo "zakotwiczyc" no nie ??

0

Po prostu nadaj im odpowiednie współrzędne (Position). Zakotwiczenie (chodzi o Dock ?) tu jest nie potrzebne, no chyba, że wszystkie obrazki leżą przylegająco obok siebie i wypełniają obszar prostokąta.

Zakotwiczyć możesz kontrolkę, na której leżą (jakiś Panel).

1 użytkowników online, w tym zalogowanych: 0, gości: 1