Цитата:
Сообщение от TIGR
если мне не изменяет память - от того что это разные вещи их и разделили в vcl TPicture вроде как вообще просто компонент, который умеет показывать TImage.
|
в том же wx есть два класса wxBitmap, wxImage - но там идет разделение на платформозависимое и платформонезависимое( первое по сути оббертка для HBITMAP, PicHandle, GdkImage, а второе - уже честно хранит все изображение в буфере ), для билдера такое не нужно - т.к. целевая ОС одна
Google говорит, что TPicture класс для хранения изображения, а TImage - виджет, странно, что zwitter привел его в пример
Цитата:
Сообщение от TIGR
в vcl делать над изображениями эффекты наверное так же как и везде... если нужен эффект берешь и пишешь его
|
скорее всего там это через канву делается
Lester добавил 26.01.2009 в 03:57
в продолжении темы про BitmapRepository
, в тулките есть большой набор предопределенных ID - например ID_BMP_CUT, ID_BMP_PRINT, ID_BMP_BACK и т.п., стандартый набор иконок для этих ID с разными размерами лежит в отдельном расширении к тулкиту( .so, .dll, .dylib ), можно использовать его( а также иметь несколько таких расширений - и выбирать тему ), можно самому загружать иконки для используемых ID, можно использовать тему иконок KDE/Gnome( в том числе и в виндовс - достаточно указать путь ) - для них есть десятки отличных тем, т.е. можно писать, например, так:
PHP код:
Menu menu;
menu.Add( ID_ACTION_NEW, "New...", , CTRL + 'N' )->SetBitmap( theBitmapRepository->GetBitmap( ID_BMP_NEW, 16 ) );
menu.Add( ID_ACTION_OPEN, "Open...", CTRL + 'O' )->SetBitmap( theBitmapRepository->GetBitmap( ID_BMP_OPEN, 16 ) );
menu.Add( ID_ACTION_PREVIEW, "Preview..." )->SetBitmap( theBitmapRepository->GetBitmap( ID_BMP_PREVIEW, 16 ) );
menu.Popup();
и вообще не думать об загрузке иконок
Lester добавил 26.01.2009 в 08:52
добавил макрос - BITMAP, теперь пример выглядит так:
PHP код:
Menu menu;
menu.Add( ID_ACTION_NEW, "New...", , CTRL + 'N' )->SetBitmap( BITMAP( ID_BMP_NEW, 16 ) );
menu.Add( ID_ACTION_OPEN, "Open...", CTRL + 'O' )->SetBitmap( BITMAP( ID_BMP_OPEN, 16 ) );
menu.Add( ID_ACTION_PREVIEW, "Preview..." )->SetBitmap( BITMAP( ID_BMP_PREVIEW, 16 ) );
menu.Popup();
Lester добавил 26.01.2009 в 11:40
добавил возможность связать action с bitmap, для всех стандартных это можно включить( при старте приложения ) через:
theSystemOptions->Write( "/Actions/En
ableDefaultAutoBitmaps", true );
для своих actions можно создать связку через:
AssignActionBitmap( MY_ID_ACTION_NEW, MY_ID_BMP_NEW );
пока это тестовый вариант, потом подумаю как сделать( назвать ) лучше
пример:
PHP код:
theSystemOptions->Write( "/Actions/EnableDefaultAutoBitmaps", true );
// Нестандартные ID
AssignActionBitmap( vsID_ACTION_NEW_DATABASE, vsID_BMP_NEW_DATABASE );
AssignActionBitmap( vsID_ACTION_OPEN_DATABASE, vsID_BMP_OPEN_DATABASE );
...
MenuBar* bar = new MenuBar( this );
//////////////////////////////////////////////////////////////////////////
// File
Menu* menu = bar->Add( "File" );
menu->Add( ID_ACTION_NEW_WINDOW, "New Window", CTRL + SHIFT + 'N' );
menu->Add( ID_ACTION_CLOSE_WINDOW, "Close Window", CTRL + SHIFT + 'W' );
menu->Add( ID_ACTION_CLOSE_TAB, "Close Tab", CTRL + 'W' );
menu->AddSeparator(); //---------------------------------------------------------------------
menu->Add( ID_ACTION_SAVE_FILE, "Save", CTRL + 'S' );
menu->Add( ID_ACTION_SAVE_ALL_FILES, "Save All", CTRL + SHIFT + 'S' );
menu->AddSeparator(); //---------------------------------------------------------------------
menu->Add( vsID_ACTION_NEW_DATABASE, "New Database...", CTRL + 'N' );
menu->Add( vsID_ACTION_OPEN_DATABASE, "Open Database...", CTRL + 'O' );
menu->Add( -1, "Open Recent Database" );
menu->Add( vsID_ACTION_CLOSE_DATABASE, "Close Database", CTRL + ALT + 'W' );
menu->Add( vsID_ACTION_CLOSE_ALL_DATABASES, "Close All Databases" );
menu->AddSeparator(); //---------------------------------------------------------------------
menu->Add( ID_ACTION_IMPORT, "Import..." );
menu->Add( ID_ACTION_EXPORT, "Export..." );
menu->AddSeparator(); //---------------------------------------------------------------------
Menu* dumpMenu = menu->AddMenu( "Dump Database..." );
dumpMenu->Add( vsID_ACTION_DUMP_SQL, "SQL..." );
dumpMenu->Add( vsID_ACTION_DUMP_XML, "XML..." );
Menu* loadMenu = menu->AddMenu( "Load Dump..." );
loadMenu->Add( vsID_ACTION_LOAD_SQL, "SQL..." );
loadMenu->Add( vsID_ACTION_LOAD_XML, "XML..." );
menu->AddSeparator(); //---------------------------------------------------------------------
menu->Add( ID_ACTION_PRINT_SETUP, "Page Setup..." );
menu->Add( ID_ACTION_PRINT, "Print...", CTRL + 'P' );
menu->Add( ID_ACTION_PRINT_PREVIEW, "Print preview" );
menu->AddSeparator(); //---------------------------------------------------------------------
menu->Add( ID_ACTION_QUIT, "Exit", ALT + 'X' );
форматирование как всегда побилось