Newsgroup: it.comp.lang.c++
Titolo: ritagliare una regione

Daccordo questo è l' NG C++ e non VB,
ma credo che avete la soluzione.......
Vorrei ritagliare una regione da un'immagine,
con il metodo + veloce possibile.
Leggere i pixel, confrontarli col colore di fondo,
quindi creare una regione x poi combinarla;
è perfetta... però impiega troppo tempo.
Se riuscissi ad individuare tutti i punti del
perimetro della figura si potrebbe utilizzare
CreatePolygonRgn
e creare la regione che m'interessa in un colpo solo.
Ma c'è un altro modo....
Private Sub Command1_Click()
'    ScaleMode = vbPixels
    FontName = "Times New Roman"
    FontSize = 50
    BackColor = vbGreen
Dim Rgn As Long
    BeginPath hdc
      Print "Luckydor"
    EndPath hdc
    Rgn = PathToRegion(hdc)
    SetWindowRgn Me.hWnd, Rgn, True
    DeleteObject Rgn
End Sub
Praticamente:
    BeginPath 'apro una Path con
      disegno
    EndPath ' chiudo la Path
    PathToRegion 'creo la regione
Eseguendo invece (tratto MSDN alla voce Paths):
Private Sub Command2_Click()
Me.AutoRedraw = True
  ' Start recording Path
  BeginPath hdc
  'Do some draw operations
  ForeColor = vbYellow
  FillColor = vbRed
  FillStyle = vbSolid
  Line (ScaleWidth * 0.2, ScaleHeight * 0.3)-(ScaleWidth * 0.8, ScaleHeight
* 0.7)
  Circle (ScaleWidth * 0.5, ScaleHeight * 0.5), ScaleHeight * 0.3
  ' Stop recording path
  EndPath hdc
'~~~~~~~~~~~~~~~~~~~~~~
  Rgn = PathToRegion(hdc)
  SetWindowRgn Me.hWnd, Rgn, True
  DeleteObject Rgn
'~~~~~~~~~~~~~~~~~~~~~~
  'Do something to finished path
  StrokeAndFillPath hdc
  ' Update device context
  Refresh
End Sub
La regione viene creata (Rgn) ma il Form scompare del tutto.
Ho caricato in Picture1 un'immagine
e disegnato nel Form con:
      Me.Picture = Picture1
      Me.Picture = Picture1.Image
      Me.PaintPicture Picture1.Image, 0, 0
    BitBlt Me.hdc, 0, 0, Picture1.Width, Picture1.Height, Picture1.hdc, 0,
0, vbSrcCopy
Non viene  nemmeno creata la regione.
Evidentemente sbaglio in qualche cosa.
Sicuro che avete la soluzione resto in standby.
------------------api in gioco------
Private Declare Function EndPath Lib "gdi32" (ByVal hdc As Long) As Long
Private Declare Function BeginPath Lib "gdi32" (ByVal hdc As Long) As Long
Private Declare Function PathToRegion Lib "gdi32" (ByVal hdc As Long) As
Long
Private Declare Function DeleteObject Lib "gdi32" (ByVal hObject As Long) As
Long
Private Declare Function SetWindowRgn Lib "user32" (ByVal hWnd As Long,
ByVal hRgn As Long, ByVal bRedraw As Boolean) As Long
Private Declare Function StrokeAndFillPath Lib "gdi32" (ByVal hdc As Long)
As Long
------------------------------
Non sono stato capace nemmeno di utilizzare l'API:
Public Declare Function GetPath Lib "gdi32" Alias "GetPath" (ByVal hdc As
Long, lpPoint As POINTAPI, lpTypes As Byte, ByVal nSize As Long) As Long
lpTypes che cos è cosa devo metterci, e nSize ?

 ma credo che avete la soluzione.......
Ma sei impazzito??? ;-PPP
-- 
Luc.

 wrote in message
news:hDYW9.78354$AA2.3...@news2.tin.it...


 ma credo che avete la soluzione.......
Se lo sai perche' posti qui? Sei un bel maleducato.
Ciao,
Nicola

ma credo che avete la soluzione.......
D'accordo che questa e` casa tua, non mia, ma suppongo che tu abbia un
secchio per l'immondizia, ci posso buttare il mio sacchetto ?
-- 
Andrea Laforgia
#exclude <windows.h>


 * Cut "DO NOT DISTURB" to reply */