|
19.11.2011, 17:43
|
#1
|
Элита
Регистрация: 16.01.2008
Сообщений: 1,800
Написано 958 полезных сообщений (для 3,833 пользователей)
|
Как задать "все" координаты для DrawImage
Нужно для всех четырех точек задать координаты, во внутреностях бмакса не особо шарю, так что буду рад за наставление.
Вообщем нужно примерно так :
Drawimage Timage,x1,y1,x2,y2,x3,y3,x4,y4,frame
|
(Offline)
|
|
19.11.2011, 18:11
|
#2
|
Злобный Админ
Регистрация: 04.09.2005
Сообщений: 5,926
Написано 3,415 полезных сообщений (для 9,330 пользователей)
|
Ответ: Как задать "все" координаты для DrawImage
Отскейль изображение до нужного размера после чего нарисуй в требуемой позиции.
(это если не надо деформаций)
__________________
|
(Offline)
|
|
19.11.2011, 18:19
|
#3
|
Элита
Регистрация: 16.01.2008
Сообщений: 1,800
Написано 958 полезных сообщений (для 3,833 пользователей)
|
Ответ: Как задать "все" координаты для DrawImage
К сожалению именно деформации и нужны. =)
За вариант решения спасибо...я уже думал как бы обойтись только ним, но он не подходит для достижениянужной цели, и еффекта =(
|
(Offline)
|
|
20.11.2011, 21:23
|
#4
|
|
Ответ: Как задать "все" координаты для DrawImage
Глянь в сторону DrawPoly() - но тут нет текстур, Вобсчем - переписать эту функцию - дело нескольких минут =).
|
|
|
Сообщение было полезно следующим пользователям:
|
|
20.11.2011, 21:44
|
#5
|
Элита
Регистрация: 16.01.2008
Сообщений: 1,800
Написано 958 полезных сообщений (для 3,833 пользователей)
|
Ответ: Как задать "все" координаты для DrawImage
Переписать "DrawPoly" или "DrawImage" для достижения цели?
Помоги пожалуйста, буду очень благодарен.
|
(Offline)
|
|
20.11.2011, 22:38
|
#6
|
Задрот
Регистрация: 24.07.2009
Адрес: Ивановская область, г. Кинешма
Сообщений: 1,574
Написано 407 полезных сообщений (для 863 пользователей)
|
Ответ: Как задать "все" координаты для DrawImage
DrawPoly переписать. А вообще где то в инетах видал сорцы для DrawTexturedPoly
|
(Offline)
|
|
Эти 2 пользователя(ей) сказали Спасибо Reizel за это полезное сообщение:
|
|
20.11.2011, 22:50
|
#7
|
Элита
Регистрация: 16.01.2008
Сообщений: 1,800
Написано 958 полезных сообщений (для 3,833 пользователей)
|
Ответ: Как задать "все" координаты для DrawImage
То что нужно, спасибо за подсказку!
http://www.blitzbasic.com/Community/...hp?topic=81258
Function DrawTexturedPoly( image:TImage,xyuv#[],frame=0, vertex = -1)
Local handle_x#, handle_y#
GetHandle handle_x#, handle_y#
Local origin_x#, origin_y#
GetOrigin origin_x#, origin_y#
Local D3DDriver:TD3D7Max2DDriver = TD3D7Max2DDriver(_max2dDriver)
Assert Image, "Image not found"
If D3DDriver Then
DrawTexturedPolyD3D ..
D3DDriver,..
TD3D7ImageFrame(image.Frame(frame)), ..
xyuv, handle_x, handle_y, origin_x,origin_y, vertex*4
Return
End If
Local OGLDriver:TGLMax2DDriver = TGLMax2DDriver(_max2dDriver)
If OGLDriver Then
DrawTexturedPolyOGL ..
OGLDriver,..
TGLImageFrame(image.Frame(frame)), ..
xyuv, handle_x, handle_y, origin_x,origin_y, vertex*4
Return
End If
End Function
Function DrawTexturedPolyD3D( Driver:TD3D7Max2DDriver, Frame:TD3D7ImageFrame,xyuv#[],handlex#,handley#,tx#,ty# , vertex)
If Driver.islost Return
If xyuv.length<6 Return
Local segs=xyuv.length/4
Local len_ = Len(xyuv)
If vertex > - 1 Then
segs = vertex / 4
len_ = vertex
End If
Local uv#[] = New Float[segs*6] ' 6
Local c:Int Ptr=Int Ptr(Float Ptr(uv))
Local ii:Int = 0
For Local i=0 Until len_ Step 4
Local x# = xyuv[i+0]+handlex
Local y# = xyuv[i+1]+handley
uv[ii+0] = x*Driver.ix+y*Driver.iy+tx
uv[ii+1] = x*Driver.jx+y*Driver.jy+ty
uv[ii+2] = 0 ' *********** THIS IS THE Z-COORDINATE
c[ii+3] = Driver.DrawColor
uv[ii+4] = xyuv[i+2]
uv[ii+5] = xyuv[i+3]
ii:+6
Next
Driver.SetActiveFrame Frame
Driver.device.DrawPrimitive(D3DPT_TRIANGLEFAN,D3DFVF_XYZ| D3DFVF_DIFFUSE | D3DFVF_TEX1,uv,segs,0)
End Function
Function DrawTexturedPolyOGL (Driver:TGLMax2DDriver, Frame:TGLImageFrame, xy#[],handle_x#,handle_y#,origin_x#,origin_y#, vertex)
Private
Global TmpImage:TImage
Public
If xy.length<6 Return
Local rot# = GetRotation()
Local tform_scale_x#, tform_scale_y#
GetScale tform_scale_x, tform_scale_y
Local s#=Sin(rot)
Local c#=Cos(rot)
Const scale#=1.28
Local ix#= c*tform_scale_x*scale
Local iy#= -s*tform_scale_y*scale
Local jx#= s*tform_scale_x*scale
Local jy#= c*tform_scale_y*scale
glBindTexture GL_TEXTURE_2D, Frame.name
glEnable GL_TEXTURE_2D
glBegin GL_POLYGON
For Local i=0 Until Len xy Step 4
If vertex > -1 And i >= vertex Then Exit
Local x#=xy[i+0]+handle_x
Local y#=xy[i+1]+handle_y
Local u#=xy[i+2]
Local v#=xy[i+3]
glTexCoord2f u,v
glVertex2f x*ix+y*iy+origin_x,x*jx+y*jy+origin_y
Next
glEnd
If Not tmpImage Then tmpImage = CreateImage(1,1)
DrawImage tmpImage, -100, - 100 ' Chtob zbit' flag texturi
End Function
Сапсибо также : Dex
|
(Offline)
|
|
Эти 3 пользователя(ей) сказали Спасибо Dzirt за это полезное сообщение:
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 09:59.
|