當前位置:首頁 » 背景圖片 » c控制項添加背景圖片
擴展閱讀
搜索比熊造型圖片 2025-03-19 05:34:56
哪個圖片網可以復制文字 2025-03-19 05:16:37
為什麼不免回表情圖片 2025-03-19 05:10:00

c控制項添加背景圖片

發布時間: 2023-06-28 20:53:48

⑴ C#中button控制項的如何添加背景圖片

BackgroundImage

⑵ 如何在C語言中添加背景圖片

C語言寫控制台程序是無法加圖片的,只能用命令行輸出,最多就是設置下背景和字體,顏色之類的。如果開發API窗口程序,完全依賴於操作系統的函數庫。C語言本身並不提供這類函數。
下面是windows系統下實現的函數代碼,第一個參數是圖片的存放的位置,第二個參數是窗口句柄。
HRESULT ShowPic(char *lpstrFile,HWND hWnd)
{
HDC hDC_Temp=GetDC(hWnd);
IPicture *pPic;
IStream *pStm;
BOOL bResult;
HANDLE hFile=NULL;
DWORD dwFileSize,dwByteRead;
//打開圖形文件
hFile=CreateFile(lpstrFile,GENERIC_READ,
FILE_SHARE_READ,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
if (hFile!=INVALID_HANDLE_VALUE)
{
dwFileSize=GetFileSize(hFile,NULL);//獲取文件位元組數
if (dwFileSize==0xFFFFFFFF)
return E_FAIL;
}
else
{
return E_FAIL;
}
//分配全局存儲空間
HGLOBAL hGlobal = GlobalAlloc(GMEM_MOVEABLE, dwFileSize);
LPVOID pvData = NULL;
if (hGlobal == NULL)
return E_FAIL;
if ((pvData = GlobalLock(hGlobal)) == NULL)//鎖定分配內存塊
return E_FAIL;
ReadFile(hFile,pvData,dwFileSize,&dwByteRead,NULL);//把文件讀入內存緩沖區
GlobalUnlock(hGlobal);
CreateStreamOnHGlobal(hGlobal, TRUE, &pStm);
//裝入圖形文件
bResult=OleLoadPicture(pStm,dwFileSize,TRUE,IID_IPicture,(LPVOID*)&pPic);
if(FAILED(bResult))
return E_FAIL;
OLE_XSIZE_HIMETRIC hmWidth; //圖片的真實寬度, 單位為英寸
OLE_YSIZE_HIMETRIC hmHeight; //圖片的真實高度, 單位為英寸
pPic->get_Width(&hmWidth);
pPic->get_Height(&hmHeight);
//轉換hmWidth和hmHeight為pixels距離,1英寸=25.4毫米
int nWidth = MulDiv(hmWidth,GetDeviceCaps(hDC_Temp,LOGPIXELSX),2540);
int nHeight = MulDiv(hmHeight,GetDeviceCaps(hDC_Temp,LOGPIXELSY),2540);
//將圖形輸出到屏幕上(有點像BitBlt)
bResult=pPic->Render(hDC_Temp,0,0,nWidth,nHeight,0,hmHeight,hmWidth,-hmHeight,NULL);
hmHeight,NULL);
pPic->Release();
CloseHandle(hFile);//關閉打開的文件
if (SUCCEEDED(bResult))
{
return S_OK;
}
else
{
return E_FAIL;
}
}

⑶ vc++如何給窗體添加背景圖片

VC是一個功能強大的可視化的開發工具,但是用VC做的標准界面與Windows一樣色彩灰暗單調,例如多文檔窗口應用程序中的主框架窗口的背景便是如此。那麼能否給主框架窗口的背景改變一下色彩或是給主框架窗口加上一幅漂亮的圖片做背景?其實也不難。但與單文檔窗口應用程序中改變框架窗口的背景方法不同,對多文檔窗口應用程序中的主框架窗口改變背景不能簡單地用ClassWizard重載OnEraseBkgnd(CDC* pDC)函數的方法實現。因為多文檔窗口應用程序中的主框架窗口的背景區是一個MDIClient類的窗口,因此改變背景與這個MDIClient類的窗口有關。MDIClient類的窗口的句柄是m_hWndMDIClient(在CMDIFrameWnd中)。以下是其實現的步驟:

一、 使用MFC AppWizard向導創建一個多文檔窗口應用程序

1、在VC的「File」菜單中單擊[New],彈出一「New」對話框。在「Projects」頁中選擇「MFC AppWizard [exe]」,在「Project name」編輯框中輸入「DrawBackground」,按[OK]按鈕,退出「New」對話框。

2、在「MFC AppWizard step 1」對話框到「MFC AppWizard step 6」對話框中選擇默認選項,按[Finish]按鈕即完成多文檔窗口應用程序的定製。

註:MFC(Microsoft Foundation Class)是MS-Visual C++的類庫。

二、向應用程序添加點陣圖

在VC的「View」菜單中單擊「Resource Includes...」, 在彈出對話框中選擇「Bitmap」, 按[Import]按鈕從文件中載入點陣圖文件,單擊「Workspace」的「Resource」便可見到剛才載入的點陣圖文件,默認的資源標識符為IDB_BITMAP1。

三、用ClassWiard生成一個 CWnd 類的派生類CclientWnd

在CclientWnd類中重載OnEraseBkgnd(CDC* pDC),OnSize(UINT nType, int cx, int cy)函數,並用手工加入重載的虛函數WNDPROC* CClientWnd::GetSuperWndProcAddr()用來返回函數指針。

類CclientWnd的頭文件代碼如下:

class CClientWnd : public CWnd

{

// Construction

public:

CClient();

// Attributes

public:

// Operations

public:

// Overrides

// ClassWizard generated virtual function overrides

file://{{AFX_VIRTUAL(CClientWnd)

public:

virtual WNDPROC* GetSuperWndProcAddr();

file://}}AFX_VIRTUAL

// Implementation

public:

virtual ~CClientWnd();

// Generated message map functions

protected:

file://{{AFX_MSG(CClientWnd)

afx_msg BOOL OnEraseBkgnd(CDC* pDC);

afx_msg void OnSize(UINT nType, int cx, int cy);

file://}}AFX_MSG

DECLARE_MESSAGE_MAP()

};

類CclientWnd的實現文件代碼如下:

// CClientWnd message handlers

BOOL CClientWnd::OnEraseBkgnd(CDC* pDC)

{

// TODO: Add your message handler code here and/or call default

CRect rectbk; // 客戶區的大小

CDC dcMen; // 內存設備描述表

CBitmap bmbk; // 點陣圖對象

bmbk.LoadBitmap(IDB_BITMAP1); // 從資源載入點陣圖 bitmap

// 得到點陣圖bitmap的大小

BITMAP stBitmap;

bmbk.GetObject(sizeof(BITMAP),&stBitmap);

CSize bmsize(stBitmap.bmWidth,stBitmap.bmHeight);

////////

dcMen.CreateCompatibleDC(pDC); // 創建兼容的設備描述表

// 選入新的點陣圖對象並保存舊的點陣圖對象

CBitmap *pold=dcMen.SelectObject(&bmbk);

GetClientRect(&rectbk);

// 取得客戶區的大小

// 從內存向屏幕復制點陣圖對象

pDC->StretchBlt(rectbk.left,rectbk.top,rectbk.Width(),

rectbk.Height(),&dcMen,0,0,bmsize.cx,bmsize.cy,SRCCOPY);

dcMen.SelectObject(pold);
// 恢復舊的點陣圖對象 dcMen.DeleteDC();// 釋放內存設備描述表 return true; }
WNDPROC* CClientWnd::GetSuperWndProcAddr()
{static WNDPROC NEAR pfnSuper = NULL; return &pfnSuper; // 返回函數指針 }
void CClientWnd::OnSize(UINT nType, int cx, int cy)
{CWnd::OnSize(nType, cx, cy);// TODO: Add your message handler code here file://重畫窗口Invalidate(); }
四、修改CMainFrame類
在CMainFrame類中定義一個CClientWnd 類的成員變數m_wndClient,並在CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)函數中把m_wndClient子類化為主框架窗口的客戶窗口。代碼如下:
在MainFrm.h 中加入:
#include "ClientWnd1.h"
class CMainFrame : public CMDIFrameWnd
{private: CClientWnd m_wndClient;};
MainFrm.cpp 中加入代碼如下:
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{if (CMDIFrameWnd::OnCreate(lpCreateStruct) == -1)
return -1;
file://把m_wndClient子類化為主框架窗口的客戶窗口
if(!m_wndClient.SubclassWindow(m_hWndMDIClient))
{TRACE("Fail to subclass MDI client window\n");
return -1;}}
五、關鍵技術
1、本程序並不復雜,關鍵是要知道多文檔窗口應用程序中的主框架窗口的背景區是一個MDIClient類的窗口。
2、選用函數要正確,如CClientWnd::OnEraseBkgnd(CDC* pDC)函數中選用GetClientRect(&rectbk) 函數來取得客戶區的大小要比選用GetClipBox(&rectbk) 函數來得好。
3、要在CclientWnd類中重載OnSize(UINT nType, int cx, int cy) 函數,並加入Invalidate() 函數重畫窗口。

⑷ c# form窗體添加背景圖片,代碼怎麼寫

有兩種方法,方法一:

1、this.BackgroundImage = Image.FromFile(@"圖片路徑")

2、this.BackgroundImage = this.imageList1.Images[0]

方法二:

imageList設置圖片像素只能是在1-256

⑸ 如何在winform自定義控制項中添加背景圖片

選中控制項;
在選擇圖片BackgroundImage;
然後在設置透明:BackColor->web->Transparent;
就OK了。

⑹ c語言窗口程序如何載入背景圖片

在VC下,使用system("colora"),增加頭文件#include,其中a表示顏色屬性,顏色屬性由兩個十六進制數字指定--第一個為背景,第二個則為前景。每個數字可以為以下任何值之一:如system("color1f");表示藍底白字。0=黑色8=灰色1=藍色9=淡藍色2=綠色A=淡綠色3=湖藍色B=淡淺綠色4=紅色C=淡紅色5=紫色D=淡紫色6=黃色E=淡黃色7=白色F=亮白色