home *** CD-ROM | disk | FTP | other *** search
/ QBasic & Borland Pascal & C / Delphi5.iso / Delphi.5 / Doc / Other / DX_DELPH.exe / L11.TXT < prev    next >
Encoding:
Text File  |  1998-12-05  |  3.3 KB  |  97 lines

  1. ╚π≡εΓεΘ SDK
  2.  
  3. ├δαΓα 32
  4.  
  5.  
  6.  
  7. //  Γ√ß≡α≥ⁿ Φτεß≡αµσφΦσ Σδ  memoryDC, ≈≥εß√ σπε Φ±∩εδⁿτεΓα≥ⁿ.
  8. ImageDC : = CreateCompatibleDC ( 0 ) ;
  9.  
  10. try
  11.  
  12. Select0bject( ImageDC, Bitmap ) ;
  13. // ∩εδ≤≈Φ≥ⁿ ≡ατ∞σ≡ Φτεß≡αµσφΦ .
  14. Get0bject( Bitinap, Size0f( BM ), @BM ) ;
  15. if Width = 0 then Width :== BM.bmWidth ;
  16. if Height == 0 then Height :== BM.bmHeight ;
  17. // ∩εδ≤≈Φ≥ⁿ ≡ατ∞σ≡ ∩εΓσ≡⌡ε±≥Φ.
  18. SurfaceDesc.dwSize := SizeOfC SurfaceDesc ) ;
  19. SurfaceDesc.dwFlags := DDSD_HEIGHT or DDSDJWIDTH ;
  20. Surf ace .GetSurfaceDesc( SurfaceDesc ) ;
  21. if Surf ace .GetDC( DC ) <> DD_OK then
  22. Raise Exception. Create ( 'GetDC failed for DirectDraw surface^ )
  23.  
  24. try
  25. StretchBlt( DC, 0, 0, SurfaceDesc.dwWidth, SurfaceDesc.dwHeight,
  26.  
  27. ImageDC, x, y. Width, Height, SRCCOPY ) ;
  28.  
  29. finally
  30.  
  31. Surface. ReleaseDC ( DC ) ;
  32. end ;
  33. finally
  34.  
  35. DeleteDC ( ImageDC ) ;
  36. end ;
  37. end ;
  38.  
  39. ╧ε±δσ ∩≡εΓσ≡ΩΦ φσΩε≥ε≡√⌡ ∩α≡α∞σ≥≡εΓ DDCopyBitmap Γ√τ√Γασ≥ Restore, ≈≥εß√ εßσ±∩σ≈Φ≥ⁿ Ωε≡≡σΩ≥φε±≥ⁿ ∩α∞ ≥ⁿ ∩εΓσ≡-
  40. ⌡φε±≥Φ, ╟α≥σ∞ εφα εß≡α∙ασ≥±  Ω εß√≈φεΘ ∩≡επ≡α∞∞σ Windows Σδ  Ωε∩Φ≡εΓαφΦ  ≡α±≥≡εΓεπε Φτεß≡αµσφΦ  ± εΣφεπε DC φα
  41. Σ≡≤πεΘ. ╚±⌡εΣφεσ ≡α±≥≡εΓεσ Φτεß≡αµσφΦσ Γ√ßΦ≡ασ≥±  Σδ  ∩σ≡Γεπε DC, ±≥αφΣα≡≥φα  ∩α∞ ≥ⁿ DC εßσ±∩σ≈ΦΓασ≥±  Γ√τεΓε∞
  42. CreateCompatibleDC. ╧σ≡σΣα≈α φ≤δσΓ√⌡ ∩α≡α∞σ≥≡εΓ °Φ≡Φφ√ Φ Γ√±ε≥√ Γ ∩≡επ≡α∞∞≤ τα±≥αΓδ σ≥ Φ±∩εδⁿτεΓα≥ⁿ ⌠αΩ≥Φ≈σ±Ω≤■
  43. °Φ≡Φφ≤ Φ Γ√±ε≥≤ ≡α±≥≡εΓεπε Φτεß≡αµσφΦ . ─δ  ≥επε, ≈≥εß√ ∩εδ≤≈Φ≥ⁿ ²≥≤ Φφ⌠ε≡∞α÷Φ■, ∩≡επ≡α∞∞α Φ±∩εδⁿτ≤σ≥ ⌠≤φΩ÷Φ■
  44.  
  45. GetObject
  46.  
  47. ╟α≥σ∞ ταπε≥αΓδΦΓασ≥±  τα∩Φ±ⁿ SurfaceDesc ∩≤≥σ∞ ΓΩδ■≈σφΦ  ⌠δαµΩεΓ DDSD_HEIGHT Φ DDSD_WIDTH. ▌≥ε ∩σ≡σΣασ≥-
  48. ±  Γ GetSurfaceDesc, Ωε≥ε≡εσ ≡σαπΦ≡≤σ≥ ∩≤≥σ∞ τα∩εδφσφΦ  ∩εδσΘ dwHeight Φ dwWidth Σσ±Ω≡Φ∩≥ε≡α. ╧≡επ≡α∞∞α ∩εδ≤≈ασ≥
  49. Γ≥ε≡εΘ DC Φτ ∩εΓσ≡⌡φε±≥Φ, Φ±∩εδⁿτ≤  Γ√τεΓ GetDC Φ ε±≤∙σ±≥Γδ   ∩≡ε±≥εσ StretchBIt ╩αΩ εß√≈φε, ßδεΩΦ try..-Anally Φ±-
  50. ∩εδⁿτ≤■≥±  Σδ  εß τα≥σδⁿφεπε ε±ΓεßεµΣσφΦ  DC. ┬±σ ²≥ε ΣεΓεδⁿφε ∩≡ε±≥√σ Γσ∙Φ. ▌≥ε ≡ατΓσΦΓασ≥ ∩ε Γσ≥≡≤ ≤±≥α≡σΓ°≤■
  51. Φ±≥Φφ≤ ε ≥ε∞, ≈≥ε ΩεΣ εß≡αßε≥ΩΦ ≡α±≥≡εΓ√⌡ Φτεß≡αµσφΦΘ Σδ  Windows ≥ µσδε ∩Φ±α≥ⁿ. ╩ ±≈α±≥ⁿ■, ≥σ∩σ≡ⁿ Γ√ ±∞εµσ≥σ ∩≡Φßσπ-
  52. φ≤≥ⁿ Ω ±ε≈ΦφσφΦ■ ∩εΣεßφεπε ΩεΣα ßστ ≈≤Γ±≥Γα ε∩α±σφΦ  τα ß≤Σ≤∙σσ!
  53.  
  54. K^'DrawSurface ≤∩≡ε∙ασ≥±  σ∙σ ßεδⁿ°σ, ∩ε≥ε∞≤ ≈≥ε ⌠εφεΓ√Θ ß≤⌠σ≡ ≥σ∩σ≡ⁿ ∞εµφε ταπ≡≤µα≥ⁿ πΣσ ≤πεΣφε, Φ±∩εδⁿτ≤ 
  55. DDReLoaBitmap. ╙∩≡ε∙σφφ√Θ DrawSurface ∩≡σΣ±≥αΓδσφ Γ δΦ±≥Φφπσ 32.19.
  56.  
  57. ╦Φ±≥Φφπ 32.19 DrawSurface ßστ ΩεΣα ε≥≡Φ±εΓΩΦ ⌠εφεΓεΘ ∩εΓσ≡⌡φε±≥Φ.
  58.  
  59. procedure TFormI ò DrawSurfaces ;
  60. var ARect    : TRect ;
  61.  
  62. ATopPos : integer ;
  63. begin
  64.  
  65. // Γ√ΓεΣ φα ε±φεΓφεσ ∩εδε≥φε.
  66. ARect := Rect( 0, 0, 640, 480 ) ;
  67. with PrimaryCanvas do try
  68. Brush .Color := clBlue ;
  69. FiliRect( ARect ) ;
  70. Brush .Style :== bsClear ;
  71. Font .Name :== * Arial ' ;
  72. Font. Size :== 24 ;
  73. Font .Color := clWhite ;
  74.  
  75. ATopPos :^ ( 480 - TextHeight( 'A* ) ) div 2 ;
  76. Text0ut( 10, ATopPos, 'Primary surface' ) ;
  77.  
  78. finally
  79.  
  80. // ≤ßσΣΦ≥ⁿ± , ≈≥ε ∞√ ±≡ατ≤ µσ ε±ΓεßεΣΦδΦ DC,
  81. // ∩ε±ΩεδⁿΩ≤ Windows τα∞ε≡αµΦΓασ≥± , ∩εΩα ∞√ ΓδαΣσσ∞ DC.
  82. Release ;
  83. end ;
  84.  
  85. { ταπ≡≤τΦ≥ⁿ Φτεß≡αµσφΦσ Γ ⌠εφεΓ√Θ ß≤⌠σ≡ }
  86. DDReloadBitmap( BackBuffer, GetBitiilapName ) ;
  87. end ;
  88.  
  89. └ ≈≥ε ∩ε ∩εΓεΣ≤ ∩αδΦ≥≡?
  90.  
  91. ▀ τφαδ, ≈≥ε εß ²≥ε∞ Γ√ εß τα≥σδⁿφε ß√ ∞σφ  ±∩≡ε±ΦδΦ! ╒ε≡ε°ε, ∞√ Γ±σ σ∙σ Γ√φ≤µΣσφ√ ≡αßε≥α≥ⁿ ± ∩αδΦ≥≡α∞Φ- ═α±≥αδε
  92. Γ≡σ∞  ∩≡σΣ±≥αΓΦ≥ⁿ σ∙σ εΣΦφ ╤╬╠-εß·σΩ≥ DirectDraw, ═α ²≥ε≥ ≡ατ ²≥ε lDirectDrawPalette. ▌≥ε≥ ∞αδσφⁿΩΦΘ ∩εδστφ√Θ εß·σΩ≥
  93. εß±δ≤µΦ≥ ßεδⁿ°Φφ±≥Γε Ωε∞∩εφσφ≥ ∩αδΦ≥≡√, φ± ≤≥≡≤µΣα  ²≥Φ∞ φα± ± Γα∞Φ. ─δ  ≥επε, ≈≥εß√ Φ±∩εδⁿτεΓα≥ⁿ IDirectDraw, Γ√
  94.  
  95. 41 6-214
  96.  
  97.