今天乙個朋友問我他在使用fillrectangle向窗體繪製圖象的時候總是發生錯位,不知道是怎麼回事。我拿**來看了一下,中規中矩的**:
private
void
drawtitle_right(graphics g)
但是為什麼會錯位呢?我除錯了半天,結果和他實驗的一樣。而使用drawimage就不會有問題。後來看了半天錯位的規律才發現原來:
「fillrectangle是填充乙個graphics,然後顯示rectangle指定的部分。」
如圖,假設的大小就是graphics的大小。fillrectangle做的操作就是以馬賽克的方式先填充這個graphics,然後再真實繪製rectangle指定的矩形(當然實際實現可能不是這樣,但是效果是這樣的。讓我想起來小時候跟我媽在暗房裡洗**,用小窗的方法用5寸的放大紙沖洗1寸相片^&^)。
當fillrectangle指定的rect正好跟getimage來的吻合時,顯示正常。如果不吻合時就會發生錯位的情況。這跟自己一直理解的:
「fillrectangle就是用指定的圖象填充座標在(x, y)處,寬width,高height的矩形。」
還是有出入的(這個理解是delphi帶來的後遺症!-_-!)。
原來我一直理解錯了memset
之前因為一直使用memset來初始化值為0,所以沒有注意到這個問題。直到後來,初始化為乙個最大值,才發現memset與我想象的不一樣。void memset void s,int ch,size t n 根據函式我們可以看出來,中間傳入的值是乙個int型別的值,即要賦值到記憶體空間的值,size t...
android Map 原來我一直理解錯了 哭暈
map裡面是如何儲存資料的?list list newarraylist for intj 0 j mcontactlist size j 列印結果 maintabcontacts initlist 167 list 方括號中間資料 是乙個map,每乙個map對應乙個員工。我之前錯誤的理解就不寫了,...
原來主機裡一直都是有兩個風扇
我的電腦開機時,像飛機一樣,真是受不了了,昨天我哥來了,拿著他的膝上型電腦來了,就說讓我開啟機箱清理清理裡面的灰塵,en,的確,自從大年清理了那回到現在已經半年了,該清理一次了,於是今天早上起來開始清理機箱.我把主機板上的風扇擦得一塵不染,又打了些機油.有用牙刷掃了掃主辦,跟其他髒的地方 擦完,我往...