Новая идея

  • Автор темы gaikamen
  • Дата начала
G

gaikamen

Гость
#1
Здравствуйте. Спасибо вам за помощь в предыдущих темах, возник новый вопрос. Отец попросил сделать карту Европы, где при нажатии на какую-либо страну, выскакивал знаменитый композитор из этой страны.
Вобщем то, все понятно, но как сделать саму картинку. Пробовал разбивать карту в фотошопе на отдельные страны и с помощью компонента Image складывать ее из этих стран. Но одна страна при этом закрывает другую. Да и вообще, тупой способ какой-то.
Может есть еще варианты? какие?

P.S. вот карта

Заранее спасибо!
 

Вложения

vital

Больной Компом Детектед
29.01.2006
2 432
40
codeby.net
#5
cursor.x
cursor.y
Например. Еще у самог TImage есть атм что-то свое.. А вообще, если такая задача стояла мне - то см.мой первый пост.
 
G

gaikamen

Гость
#6
А вот еще вопрос: как узнать цвет пикселя с помощью Canvas при ONMouseDown?
 

vital

Больной Компом Детектед
29.01.2006
2 432
40
codeby.net
#7
Код:
function DesktopColor(const X, Y: Integer): TColor;
var
c: TCanvas;
begin
c := TCanvas.Create;
try
c.Handle := GetWindowDC(GetDesktopWindow);
Result  := GetPixel(c.Handle, X, Y);
finally
c.Free;
end;
end;
Сори, что на дельфях, но так сподручнее было(нету у меня примера на с). На сях только синтаксис изменится.
 
G

gaikamen

Гость
#8
Еще вопрос:
Код:
if(Image1->Picture->Bitmap->Canvas->Pixels[X][Y]=='FF0000')
{
тут что-то
}
Не компилируется, а c clRed работает

Как сделать сравнение по такому коду например FF0000?
 

vital

Больной Компом Детектед
29.01.2006
2 432
40
codeby.net
#9
1.
$FF0000
или
0xFF0000
Это не строка, а 16е число.
2. Есть специальная функция для приведения числа к типу TColor (А шоб я помнил какая..)

Добавлено: function RGB(red,green,blue):Tcolor;


Добавлено: ПС.
В цветах лучше не забывать про первые два нуля т.е.
Белый цвет выглядит так:
$00FFFFFF
 
G

gaikamen

Гость
#10
Спасибо.
Блин, а почему у меня из красного, черного, синего и зеленого цветов работает только зеленый и черный?
Вот код
Код:
void __fastcall TForm1::Image1MouseMove(TObject *Sender, TShiftState Shift,
int X, int Y)
{
if
(Image1->Picture->Bitmap->Canvas->Pixels[X][Y]==000000){
Label1->Caption="Это Франция";}
if
(Image1->Picture->Bitmap->Canvas->Pixels[X][Y]==0x00FF00){
Label1->Caption="Это Германия";}
if(Image1->Picture->Bitmap->Canvas->Pixels[X][Y]==0xFF0000){
Label1->Caption="Это Испания";}
if
(Image1->Picture->Bitmap->Canvas->Pixels[X][Y]==0x0000ff){
Label1->Caption="Это Россия";}
}
 

vital

Больной Компом Детектед
29.01.2006
2 432
40
codeby.net
#11
Ну остальные видимо не таких цветов. т.е. там какие-нибудь мелкит оттенки.. типа 0x00ff01..
 
G

gaikamen

Гость
#12
Нет, лично эти коды из фотошопа копировал.
 

vital

Больной Компом Детектед
29.01.2006
2 432
40
codeby.net
#13
Формат представления цвета в фотошопе и Борланде разный. Вот проверьте написанной выше мной функцией, полученный результат перевидите в хекс сравните с вариантиов фотощопа, и все поймете.