Arsip: Beda canvas dan HDC

more 18 years ago
Manz
Kalo yang saya tau seh :
o Canvas adalah sebuah class yang dipakai oleh device context dan mempunyai beberapa graphical object, TBitmap, TIcon dan etc etc etc...
o HDC adalah (Handle Device Context) sebuah handling untuk menangani device contect, maksudnya sebuah pointer yang diperlukan untuk menangani device context yang dipakai, tidak hanya canvas, tetapi component yang bersifat container.

more 18 years ago
DelphiExpert
:mrgreen:
TCanvas adalah sebuah class yg meng-enkapsulasi fungsi-fungsi (dasar) windows yg berkaitan dengan manipulasi graphics, pada intinya, TCanvas dibuat utk memudahkan programmer Delphi dalam berhubungan dengan device context yg notabene (seharusnya) harus menggunakan Windows API.
HDC sendiri seperti manz_delphi bilang adalah sebuah Handle terhadap Device Context (Device context dapat dianalogikan sebagai sebuah device yg dapat dimanipulasi menggunakan perintah2 graphics (related to HDC) misal: (Screen, Printer, Plotter dll)
TCanvas sendiri mempunyai property HDC (Handle) yg merujuk pada sebuah device context tertentu (biasanya dialokasikan otomatis)
Dalam pemrograman windows; sebenarnya utk menuliskan (menggambar/me-render lebih tepatnya) text, rectangle, gambar dll. ke sebuah device, harus melalui HDC (silahkan cek, semua fungsi windows API yg berhubungan dng graphics pasti mempunyai parameter HDC - sebagai isyarat fungsi tersebut akan me-render sesuatu ke mana).
mengganti font color, atau brush color sebenernya ngga' se-simple seperti yg dilakukan kalau kita menggunakan TCanvas (dan untuk itulah TCanvas dibuat - TCanvas dengan 'halus' telah menyembunyikan fungsi2 yg berkaitan dengan windows API dng baik)
misal utk membuat sebuah rectangle di koordinat 0, 0, 300, 300:
- menggunakan windows API
var hbr: HBRUSH;
hpn: HPEN;
R: TRect;
DC: HDC;
begin
// destination rectangle - filled with blue color & outlined by black color
R:= Rect(0, 0, 300, 300);
DC:= GetDC(Panel1.Handle);
hpn:= CreatePen(PS_SOLID, 1, ColorToRGB(clBlack));
hbr:= CreateSolidBrush( ColorToRGB(clBlue) );
try
SelectObject(DC, hbr);
Windows.FillRect(DC, R, hbr);
SelectObject(DC, hpn);
with R do
Windows.Rectangle(DC, Left, Top, Right, Bottom);
finally
DeleteObject(hrb);
DeleteObject(hpn);
ReleaseDC(Panel1.Handle, DC);
end;
- menggunakan TCanvas
type THackPanel = class(TCustomPanel);
var Canvas: TCanvas;
R: TRect;
begin
// destination rectangle - filled with blue color & outlined by black color
R:= Rect(0, 0, 300, 300);
// access TPanel canvas
Canvas:= THackPanel(Panel1).Canvas;
Canvas.Pen.Width:= 1;
Canvas.Pen.Color:= clBlack;
Canvas.Brush.Style:= bsSolid;
Canvas.Brush.Color:= clBlue;
Canvas.Rectangle(R);
sama-sama menggambarkan sebuah kotak, tapi lihat beda dlm coding-nya xixix
sekalipun sama-sama menggunakan Windows API, dikau lebih dimanja jika menggunakan class wrapper-nya; yaitu TCanvas
tapi dng sedikit catatan, namanya wrapper tentu performance-nya lebih rendah jika dibandingkan langsung menggunakan core API-nya :mrgreen:
more 18 years ago
Manz
Waduh ... kalo yang expert udah angkat bicara kayak begini dech ... bingung juga aku :mrgreen:
more ...
- Pages:
- 1
reply |
Report Obsolete
AI Forward

🚀 We're thrilled to partner with Alibaba Cloud for "AI Forward - Alibaba Cloud Global Developer Summit 2025" in Jakarta! Join us and explore the future of AI. Register now:
https://int.alibabacloud.com/m/1000400772/
#AlibabaCloud #DeveloperSummit #Jakarta #AIFORWARD
Last Articles
Last Topic
- PascalTalk #6: (Podcast) Kuliah IT di luar negeri, susah gak sih?
by LuriDarmawan in Tutorial & Community Project more 4 years ago - PascalTalk #5: UX: Research, Design and Engineer
by LuriDarmawan in Tutorial & Community Project more 4 years ago - PascalTalk #4: Obrolan Ringan Seputar IT
by LuriDarmawan in Tutorial & Community Project more 4 years ago - PascalTalk #2: Membuat Sendiri SMART HOME
by LuriDarmawan in Tutorial & Community Project more 4 years ago - PascalTalk #3: RADically Fast and Easy Mobile Apps Development with Delphi
by LuriDarmawan in Tutorial & Community Project more 4 years ago - PascalTalk #1: Pemanfaatan Artificial Intelligence di Masa Covid-19
by LuriDarmawan in Tutorial & Community Project more 4 years ago - Tempat Latihan Posting
by LuriDarmawan in OOT more 5 years ago - Archive
- Looping lagi...
by idhiel in Hal umum tentang Pascal Indonesia more 12 years ago - [ask] koneksi ke ODBC user Dsn saat runtime dengan ado
by halimanh in FireBird more 12 years ago - Validasi menggunakan data tanggal
by mas_kofa in Hal umum tentang Pascal Indonesia more 12 years ago
Random Topic
- membatasi DBGrid
by wati in Tip n Trik Pemrograman more 13 years ago - OOT: buku delphi
by wong_error in OOT more 18 years ago - Randomize Query
by syntax_error in Tip n Trik Pemrograman more 17 years ago - nomer otomatis
by adit_male_01 in Hal umum tentang Pascal Indonesia more 17 years ago - [Ask] Gimana extract setiap warna ke array
by derim in Form Enhancement & Graphical Controls more 16 years ago - Dotnetnuke pake Delphi
by wongUedanTenan in Delphi.NET more 16 years ago - Lokasi My Network Places & isi dari Lokasi Memory???
by s373n in Tip n Trik Pemrograman more 16 years ago - Store Procedure???
by eena in MySQL more 18 years ago - Membuat SCADA dengan Delphi
by aandrie77 in Enginering more 13 years ago - nanya tentang program penjualan
by Erlangga in Tip n Trik Pemrograman more 17 years ago