Problem...

2 отговора 96 прегледа
#1

Problem...

Imam sledniq problem:
Pravq igra boardgame sys tablo 6x6. Za sega tabloto se systoi ot 36 kartinki koito gi initcializiram po daden na4in... kak tova ne e vajno. Mejdu nqkoi ot tezi 36 kletki trqbva da ima STENI... prosto stena mejdu 2 kletki i ot ednata kletka ne moje da se mine v drugata.

Problema mi e 4e ne znam kak da narisuvam tezi steni na VB-to. Moje bi trqbva da napravq 2 kartinki - vertikalna i horizontalna stena i po nqkakuv na4in da gi postavqm na dadenoto mqsto. 6te mi dadete li nqkakva idea kak da risuvam tezi steni...

Отговор
в отговор на Tony #2

Re: Problem...


Option Explicit
Private Type RECT

Left As Long
Top As Long
Right As Long
Bottom As Long

End Type

Private Const BDR_RAISEDINNER = &H4
Private Const BDR_RAISEDOUTER = &H1
Private Const EDGE_RAISED = _
(BDR_RAISEDOUTER Or BDR_RAISEDINNER)
Private Const BDR_SUNKENOUTER = &H2
Private Const BDR_SUNKENINNER = &H8


Private Const EDGE_SUNKEN = _
(BDR_SUNKENOUTER Or BDR_SUNKENINNER)
Private Const EDGE_ETCHED = _
(BDR_SUNKENOUTER Or BDR_RAISEDINNER)
Private Const EDGE_BUMP = _
(BDR_RAISEDOUTER Or BDR_SUNKENINNER)

Private Const BDR_INNER = &HC
Private Const BDR_OUTER = &H3
Private Const BDR_SUNKEN = &HA

Private Const BF_MIDDLE = &H800
Private Const BF_SOFT = &H1000
Private Const BF_ADJUST = &H2000
Private Const BF_FLAT = &H4000
Private Const BF_MONO = &H8000

Private Enum EdgeContrast

Middle = BF_MIDDLE
Soft = BF_SOFT
Adjust = BF_ADJUST
Flat = BF_FLAT
Mono = BF_MONO

End Enum

Private Enum EdgeStyle

ButtonStyle = EDGE_RAISED
MenuStyle = BDR_RAISEDINNER
MenuStyleSoft = BDR_RAISEDOUTER
SunkenPanel = BDR_SUNKEN
SunkenPanelSoft = BDR_SUNKENINNER
SunkenFrame = EDGE_ETCHED
RaisedFrame = EDGE_BUMP

End Enum

Private Const BF_LEFT = &H1
Private Const BF_TOP = &H2
Private Const BF_TOPLEFT = (BF_TOP Or BF_LEFT)

Private Const BF_RIGHT = &H4
Private Const BF_BOTTOM = &H8
Private Const BF_BOTTOMRIGHT = (BF_BOTTOM Or BF_RIGHT)
Private Const BF_RECT = (BF_LEFT Or BF_TOP Or BF_RIGHT Or BF_BOTTOM)

'Диагонални изпъкналости
Private Const BF_DIAGONAL = &H10

Private Const BF_DIAGONAL_ENDTOPRIGHT = _
(BF_DIAGONAL Or BF_TOP Or BF_RIGHT)

Private Const BF_DIAGONAL_ENDTOPLEFT = _
(BF_DIAGONAL Or BF_TOP Or BF_LEFT)

Private Const BF_DIAGONAL_ENDBOTTOMLEFT = _
(BF_DIAGONAL Or BF_BOTTOM Or BF_LEFT)

Private Const BF_DIAGONAL_ENDBOTTOMRIGHT = _
(BF_DIAGONAL Or BF_BOTTOM Or BF_RIGHT)

Private Declare Function DrawEdge Lib "user32.dll" _
(ByVal hdc As Long, _
qrc As RECT, _
ByVal edge As Long, _
ByVal grfFlags As Long) As Long

Private Sub Draw_Edge(PictureBox As PictureBox, _
ByVal Left As Long, _
ByVal Right As Long, _
ByVal Top As Long, _
ByVal Bottom As Long, _
ByVal Style As EdgeStyle, _
ByVal Kontrast As EdgeContrast)

Dim rc As RECT

If Not (TypeOf PictureBox Is PictureBox) Then
Exit Sub
End If


PictureBox.ScaleMode = vbTwips
PictureBox.Visible = True
PictureBox.AutoRedraw = True
PictureBox.BorderStyle = 0
PictureBox.ClipControls = True
PictureBox.ScaleMode = vbPixels

If (Bottom = 0) And (Right = 0) Then

rc.Left = PictureBox.ScaleLeft
rc.Top = PictureBox.ScaleTop
rc.Bottom = PictureBox.ScaleHeight + PictureBox.ScaleLeft
rc.Right = PictureBox.ScaleWidth + PictureBox.ScaleLeft

Else

rc.Left = Left
rc.Top = Top
rc.Bottom = Bottom
rc.Right = Right

End If

Call DrawEdge(PictureBox.hdc, rc, Style, BF_RECT Or Kontrast)
PictureBox.Refresh

End Sub
Private Sub Command1_Click()

Draw_Edge Picture1, 10, 15, 0, 100, ButtonStyle, Adjust
Draw_Edge Picture1, 50, 55, 0, 100, ButtonStyle, Adjust

End Sub

Редактирано от Щиpлиц на

Отговор
в отговор на Ptr #3

Re: Blagodarq!

Blagodarq mn :) Tova mai 6e svyr6i rabota :)

Отговор