G D I+

ạ ươ

G V: Ph m  A nh Ph ng Em ail: paphuong@ fit.hcm uns.edu.vn

C h  ủ đề GDI & Device Context GDI+ Các namespace Kĩ thu t di chuy n nh ậ ể ả Kĩ thu t ch ng flicker ậ

ệ ệ ẽ ọ

G D I T p hàm  A PI dùng   th c hi n vi c m i thao tác v   ậ

ệ đ ề để ự trong h   i u hành W inX P

D evice Context là n i m à m i thao tác v  th c hi n trên  ọ

ẽ ự ệ ơ

ồ đ ó. Bao g m  có: Paint Brush Im age Color ..

ớ ướ đố ượ ớ

G D I+ Th c hi n v  trên m ôi tr ng .N ET ườ ự Cung c p t p nam espace, l p h ng  i t ng l n cho

đượ

ế ằ đố ượ để ẽ ỗ ệ ẽ ấ ậ ự ệ ẽ vi c th c hi n v D evice Context  c thay th  b ng  i t ng G raphic M i control  u có  i t ng G raphic   v  nó, bao  đố ượ đề

ồ g m  Form , Button, TextBox, … .

G D I+

Các nam espace chính

Tên

ĩ

System .D raw ing

ẽ ơ đố

M ô tả Đị ữ đố ượ nh ngh a nh ng  i t ng v  c   ả b n (Fonts, Pens, Brushes,..) và  i  ượ t ng G raphic ấ

System .D raw ing.D raw ing2D

ư

ữ đố ượ Cung c p nh ng  i t ng v  vector  ề 2 chi u nh  gradient brushes, gradient  pens,..

System .D raw ing.Im age

ư ự ướ ả

ệ ả Thao tác v i hình  nh nh  th c hi n  ẽ ấ v , l y thông tin kích th c  nh, …

ữ đố

System .D raw ing.Printing

ự Th c hi n in; cung c p nh ng  i  ớ ượ t ng giao tác v i printer

System .D raw ing.Text

ẽ ớ Th c hi n v  v i các font.

Đố ượ

đố ượ Đ ủ

đố ượ ẽ đề ự ệ

i t ng G raphic  ây là  i t ng quan tr ng c a G D I+ ọ M i thao tác v   u th c hi n trên  i t ng G raphic

B t kì l p control nào c ng  u có thu c tính G raphic  ũ đề

ự ệ

ẽ ẽ ấ đ

đượ

ọ này ấ ộ

c

Reload

ớ để ẽ dùng   v  chính nó Có 2 cách truy xu tấ S  ki n Paint H àm  CreateG raphic():  nh v  s  m t  i khi Form   Ả

Ví dụ

Đố ượ

i t ng G raphic

D anh sách các hàm  vẽ

Tên

ế ậ

M ô tả ẽ

Thi t l p vùng v

Clip

ẽ ớ

Clear(Color)

Tô toàn b  vùng v  v i m àu Color ố ề ậ đ ể

ẽ đườ

D raw Curve

ng u n con n i li n t p  i m

V

D raw Eclipse

V  hình Eclipse ẽ ể ượ

D raw Icon

V  bi u t ng Icon

ữ ậ

D raw Rectangle

V  hình ch  nh t

độ

D raw A rc

V  hình tròn theo

Ví dụ

Ví dụ V  hình Eclipse

Ví dụ

ẽ V  Icon

Ví dụ

ẽ V  hình tròn (D raw A rc)

Đố ượ

i t ng G raphic

D anh sách các hàm  tô m àu

Tên

M ô tả ữ ậ

FillRectangle

Tô m àu hình ch  nh t

FillEclipse

FillRegion

Tô m àu hình eclipse ẽ ộ Tô m àu m t vùng v

ở ậ đ ể

FillPolygon

ạ Tô m àu hình t o b i t p  i m

From H D C

L y device context c a graphic

ReleaseH D C

G i i phóng device context

ể đố ượ ứ ă ẽ ấ

System .D raw ing Cung c p nh ng ch c n ng, ki u  i t ng tham  gia v   ữ

  s  d ng các  i t ng v  nâng cao, ta s  dùng

đố ượ ẽ

ơ ả c  b n Để ử ụ ẽ System .D raw ing.D raw ing2D , System .D raw ing.Im aging và  System .D raw ing.Text

Pen, Pens

Brushes

FontFamily

Graphic Object

TextureBrush

Bitmap

SolidBrush

Pen D ùng Pen có s n thông qua Pens ẵ Pens.A liceBlue Pens.A qua Pens.Black Pens.Brow n …

D ùng Pen do t  t o thông qua l p Pen

ự ạ new  Pen(Brush) new  Pen(Color) new  Pen(Color, W idth)

Brush D ùng Brush t  cóự

Brushes.Lavendar Brushes.Ivory Brushes.LightBlue

TextureBrush: dùng  nh im age   v để ẽ ả SolidBrush:T o c  v i m àu  n s c đơ ắ ạ ọ ớ

Ví dụ

TextureBrush

Ví dụ

SolidBrush

Ví dụ DrawString

đố ớ ả ẽ ấ ớ

System .D raw ing.D raw ing2D Cung c p các l p cho phép v  nâng cao  i v i  nh v   ẽ

ề ặ Vecto ho c 2 chi u

GraphicsPath

LinearGradientBrush

HatchBrush

Graphic Object

PathGradientBrush

Blend

RegionData

Ví dụ

G raphicsPath

Ví dụ

LinearGradientBrush

Blend Blend &  Position: ị ừ

ạ đ ể

đ ể

đế

Blend có giá tr t  0.0f  n 1.0f. T i  i m  Position,  i m

ẽ đượ ạ

ế

m àu s

ắ đầ c t o b i %  m àu b t  u và %  m àu k t thúc

Ví dụ

Ví dụ

Ví dụ

M ulti­Color Blend

Ví dụ

M ulti­Color Blends

Ví dụ

H atchBrush

ể ả

ĩ K  thu t di chuy n  nh ự ệ ử ụ S  d ng Tim er &  s  ki n Paint

ẽ đượ ệ đ ề ọ

Tim er N am espace: System .Tim ers.Tim e  nh kho ng th i gian 1 hàm  s   ờ

ự ệ

c h   i u hành g i

Interval Thu c tính:  ộ

ự ệ

đượ

Interval: Cho bi t kho ng th i gian m à s  ki n Tick

c

ế ọ g i (m ilisecond)

ả Đị ạ để ự l i   th c thi S  ki n:  ự ệ Tick: K hai báo hàm  x  lý s  ki n Tick sau 1 kho ng

Ví d :ụ

ệ ẽ ạ để ự

Invalidate  H ành  ng Invalidate dùng   th c hi n v  l i Form   độ

S  d ng hàm  : Invalidate

đ ho c 1 vùng nào  ó trên Form .

ặ ử ụ 

.Invalidate (Rectangle, bInvalidateChildren) .Invalidate (Region, bInvalidateChildren)

ĩ

ố ậ K  thu t ch ng Flicker K hi s  ki n Paint  đượ ọ ự ệ

ọ đố ượ c g i, m i  i t ng s   đố ượ

đổ ọ độ đố ượ

ĩ

ự ế ẽ ườ ợ

v )ẽ

đố ượ

D rag &  D rop 1  i t ng

ẽ đượ ẽ c v   Đ ề tr c ti p trên D evice Context ( i t ng G raphics).  i u  ệ ượ này s  gây hi n t ng flicker trong 3 tr ng h p sau: Resize m àn hình ho c user control A nim ation (K  thu t Tim er + Thay  i t a    i t ng

ự ệ đ ạ ủ

ố ĩ K  thu t ch ng Flicker  C ách 1:  Trong s  ki n Load c a Form  ta chèn  o n code sau

ặ đị

ố ĩ K  thu t ch ng Flicker C ách 2: 1/ O verride l i s  ki n v   nh n n m c  nh c a W indow

ạ ự ệ ẽ ả ệ ẽ ả ự ề ề không th c hi n v   nh n n vì nó s ủ ẽ đượ ẽ c v  trên

để M em D C

ớ ẽ ẽ ả đ ướ 2/ V   nh lên 1 Bitm ap tr c; sau  ó m i v  vào D C

ẽ ự ế ẽ ẽ

ớ đệ ẽ ọ

đệ Thay vì v  tr c ti p trên D evice Context, ta s  v  vào 1  vùng nh   m  (double buffer). K hi m i thao tác v  trên  ớ ẽ vùng  m  xong, ta m i v  vào D evice Context

Ví dụ

Ví dụ

Ví dụ

H TẾ