下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第用C#繪制九宮格形式的圖片目錄方法一:圖片上繪制直線方法二:切分繪制圖片總結(jié)使用GDI+產(chǎn)生九宮格形式的圖片,不考慮局部放大的功能。具體的方式如下:
方法一:圖片上繪制直線
想到的最簡單粗暴的方式就是直接在圖片上繪制九宮格的線,看著像是切成了九片,實際上還是完整的圖片,主要代碼及效果如下所示:
m_startX=pnlCanvas.Width/6;
m_startY=pnlCanvas.Height/6;
m_imageWidth=pnlCanvas.Width-m_startX*2;
m_imageHeight=pnlCanvas.Height-m_startY*2;
e.Graphics.DrawImage(m_image,m_startX,m_startY,m_imageWidth,m_imageHeight);
using(Penp=newPen(Brushes.White,m_lineWidth))
intstepX=m_imageWidth/3;
intstepY=m_imageHeight/3;
for(inti=1;ii++)
e.Graphics.DrawLine(p,m_startX+i*stepX,m_startY,m_startX+i*stepX,m_startY+m_imageHeight);
e.Graphics.DrawLine(p,m_startX,m_startY+i*stepY,m_startX+m_imageWidth,m_startY+i*stepY);
這種方式的缺點是白線會遮住部分圖片內(nèi)容。如果要實現(xiàn)局部放大,就要計算并保存每部分圖片的位置和大小,等鼠標移動到圖片區(qū)域時,將該部分圖片放大繪制即可。
方法二:切分繪制圖片
Graphics類中的DrawImage函數(shù)有一個重載函數(shù),可以將圖片的部分區(qū)域內(nèi)容繪制到指定區(qū)域,可以利用該函,將原圖分為九個區(qū)域,然后依次繪制到窗口中,在加上線條即可構(gòu)成九宮格形式。主要代碼及效果圖如下所示:
這種方式的問題是繪制線條時難以精確的將線條繪制到預(yù)留的線條區(qū)域,看著效果不太好。
m_startX=pnlCanvas.Width/6-2*m_lineWidth;
m_startY=pnlCanvas.Height/6-2*m_lineWidth;
m_imageWholeWidth=pnlCanvas.Width-m_startX*2;
m_imageWholeHeight=pnlCanvas.Height-m_startY*2;
intsrcImageSplittedWidth=m_image.Width/3;
intsrcImageSplittedHeight=m_image.Height/3;
intdestImageSplittedWidth=(m_imageWholeWidth-2*m_lineWidth)/3;
intdestImageSplittedHeight=(m_imageWholeHeight-2*m_lineWidth)/3;
for(intheightIndex=0;heightIndexheightIndex++)
for(intwidthIndex=0;widthIndexwidthIndex++)
g.DrawImage(m_image,
newRectangle(m_startX+destImageSplittedWidth*widthIndex+m_lineWidth*widthIndex,m_startY+destImageSplittedHeight*heightIndex+m_lineWidth*heightIndex,destImageSplittedWidth,destImageSplittedHeight),
newRectangle(srcImageSplittedWidth*widthIndex,srcImageSplittedHeight*heightIndex,srcImageSplittedWidth,srcImageSplittedHeight),GraphicsUnit.Pixel);
using(Penp=newPen(Brushes.White,m_lineWidth))
p.Alignment=System.Drawing.Drawing2D.PenAlignment.Center;
for(inti=1;ii++)
g.DrawLine(p,m_startX+destImageSplittedWidth*i+m_lineWidth*i,m_startY,m_startX+destImageSplittedWidth*i+m_lineWidth*i,m_startY+m_imageWholeHeight);
g.DrawLine(p,m_startX,m_startY+i*destImageSplittedHeight+m_lineWidth*i,m_startX+m_imageWholeWidth,m_startY+i*destImageSplittedHeight+m_lineWidth*i);
為避免上述問題,將圖片背景設(shè)置為白色,這樣繪制完九片圖形后,結(jié)合背景色,看著就是九宮格形式。代碼就補貼了,就是上面的代碼去掉繪制線條部分,然后在繪制圖片前用白色填充圖片區(qū)域即可。代碼效果如下圖所示。
此時還有一點問題,就是右側(cè)和下方還有一丁點空白(感覺是計算各屬性值時取整造成的)。為消除空白,直接在填充圖片區(qū)域背景色時,填充寬度和
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年中職第二學(xué)年(護理)老年照護專項試題及答案
- 2025年大學(xué)本科(食品質(zhì)量與安全)食品分析試題及答案
- 2025年大學(xué)食品科學(xué)與工程(食品工程)試題及答案
- 2025年中職焊接技術(shù)與自動化(手工焊接)試題及答案
- 養(yǎng)老院老人心理咨詢師培訓(xùn)制度
- 養(yǎng)老院心理慰藉制度
- 公共交通從業(yè)人員培訓(xùn)考核制度
- 2026年人工智能計算機視覺基礎(chǔ)知識題庫含答案
- 2026年刮痧師中醫(yī)理論考核試題含答案
- 2026年中級公共文化服務(wù)面試題及答案
- 土壤微生物群落結(jié)構(gòu)優(yōu)化研究
- 2024外研版四年級英語上冊Unit 4知識清單
- 四川省南充市2024-2025學(xué)年部編版七年級上學(xué)期期末歷史試題
- 國有企業(yè)三位一體推進內(nèi)控風控合規(guī)建設(shè)的問題和分析
- 急診預(yù)檢分診課件教學(xué)
- 2025年高二數(shù)學(xué)建模試題及答案
- 儲能集裝箱知識培訓(xùn)總結(jié)課件
- 幼兒園中班語言《雪房子》課件
- 房地產(chǎn)項目開發(fā)管理方案
- 堆垛車安全培訓(xùn)課件
- 貝林妥單抗護理要點
評論
0/150
提交評論