Новая идея

Тема в разделе "Borland C++ Builder & Kylix", создана пользователем gaikamen, 26 мар 2010.

  1. gaikamen

    gaikamen Гость

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

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

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

    Вложения:

    • europe_1700.jpg
      europe_1700.jpg
      Размер файла:
      205,3 КБ
      Просмотров:
      59
  2. vital

    vital Больной Компом Детектед

    Регистрация:
    29 янв 2006
    Сообщения:
    2.468
    Симпатии:
    27
    html + map?
     
  3. vital

    vital Больной Компом Детектед

    Регистрация:
    29 янв 2006
    Сообщения:
    2.468
    Симпатии:
    27
    + да, разбивать глупо, проще получать область в которой кликнуто..
     
  4. gaikamen

    gaikamen Гость

    А как?
     
  5. vital

    vital Больной Компом Детектед

    Регистрация:
    29 янв 2006
    Сообщения:
    2.468
    Симпатии:
    27
    cursor.x
    cursor.y
    Например. Еще у самог TImage есть атм что-то свое.. А вообще, если такая задача стояла мне - то см.мой первый пост.
     
  6. gaikamen

    gaikamen Гость

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

    vital Больной Компом Детектед

    Регистрация:
    29 янв 2006
    Сообщения:
    2.468
    Симпатии:
    27
    Код (Delphi):
    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;
    Сори, что на дельфях, но так сподручнее было(нету у меня примера на с). На сях только синтаксис изменится.
     
  8. gaikamen

    gaikamen Гость

    Спасибо
     
  9. gaikamen

    gaikamen Гость

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

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

    vital Больной Компом Детектед

    Регистрация:
    29 янв 2006
    Сообщения:
    2.468
    Симпатии:
    27
    1.
    $FF0000
    или
    0xFF0000
    Это не строка, а 16е число.
    2. Есть специальная функция для приведения числа к типу TColor (А шоб я помнил какая..)

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


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

    gaikamen Гость

    Спасибо.
    Блин, а почему у меня из красного, черного, синего и зеленого цветов работает только зеленый и черный?
    Вот код
    Код (Text):
    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="Это Россия";}
    }
     
  12. vital

    vital Больной Компом Детектед

    Регистрация:
    29 янв 2006
    Сообщения:
    2.468
    Симпатии:
    27
    Ну остальные видимо не таких цветов. т.е. там какие-нибудь мелкит оттенки.. типа 0x00ff01..
     
  13. gaikamen

    gaikamen Гость

    Нет, лично эти коды из фотошопа копировал.
     
  14. vital

    vital Больной Компом Детектед

    Регистрация:
    29 янв 2006
    Сообщения:
    2.468
    Симпатии:
    27
    Формат представления цвета в фотошопе и Борланде разный. Вот проверьте написанной выше мной функцией, полученный результат перевидите в хекс сравните с вариантиов фотощопа, и все поймете.
     
Загрузка...

Поделиться этой страницей