Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[Borland C++] Maskowanie obrazu przez grafikę

Ostatnio zmodyfikowano 2016-12-05 18:55
Autor Wiadomość
PL_Andrev
Temat założony przez niniejszego użytkownika
[Borland C++] Maskowanie obrazu przez grafikę
» 2016-12-05 13:16:43
Witam,

Celem zadania jest wyświetlenie okienka informacyjnego po kliknięciu w dany rejon formularza (w zadaniu: czarny obszar rysowany przez Canvas->Rectangle).

Zadanie zostało rozwiązane w ten sposób:
1) na formatce położono kilka obiektów typu "Image" z funkcją / powiadomieniem wywoływaną kliknięcia na ten obszar,
2) na formatce rysowane są obiekty graficzne (Canvas->Rectangle), zakrywające "domyślne obiekty typu Image,

W efekcie kliknięcie w Image1 (maskowany przez grafikę czarnego prostokąta) wywołuje informację (patrz obrazek).

Problem:

Formatka może zostać zeskalowana, wtedy wszystkie paski ulegają także skalowaniu (aby być widoczne na formularzu).
Aby skalowanie działało, Image2 zostaje programowo dopasowany do wielkości kolejnego czarnego pola (za pomocą Left, Top, Height, Width),
Od tego momentu Image2 przykrywa grafikę Canvas->Rectangle.

Jak można obejść / rozwiązać ten problem?

Link do obrazka z efektem pracy / problemem:
http://i.imgur.com/NFxxJrj.png



P-154531
j23
» 2016-12-05 14:58:11
Te image są tylko po to, żeby wykryć kliknięcie w dany obszar?
P-154534
PL_Andrev
Temat założony przez niniejszego użytkownika
» 2016-12-05 15:03:41
Tak.
Grafika jest typu "dummy" więc o ile wiem nie może być "klikalna".
Formatka także nie rejestruje lokalizacji kliknięć myszy, więc takie maskowanie wydawało się rozsądną ideą.

P-154535
michal11
» 2016-12-05 16:15:28
Nie znam Borlanda ale może drzewa czwórkowe rozwiązałyby twój problem ?
P-154539
j23
» 2016-12-05 18:55:22
@PL_Andrev, a to nie prościej obszary zdefiniować za pomocą RECT/TRect i w on-clicku sprawdzać, czy nie zostały kliknięte?



ps. dla obu struktur masz funkcję PtInRect (wersja WinAPI i VCL), która testuje, czy dany punkt leży w podanym obszarze.
P-154553
« 1 »
  Strona 1 z 1