PureBasic - форум

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » PureBasic - форум » Вопросы по PureBasic » Вопросы новичка (продолжение…)


Вопросы новичка (продолжение…)

Сообщений 271 страница 300 из 961

271

Пётр написал(а):

Так же используем Droooy. Определить Рабочий стол текущего юзера Debug GetSpecialFolderLocation(16)

А почему, когда я пытаюсь скопировать файл с рабочего стола «1.jpg» в папку на рабочем столе "Новая папка" ,то это не получается сделать командой CopyFile(), а получается только сделать CopyDirectory() Что я не так делаю???
Так работает:

Код:
d=CopyDirectory( GetSpecialFolderLocation(16), GetSpecialFolderLocation(16)+"Новая папка", "1.jpg")
Debug d

А так не работает: :dontknow:

Код:
q=CopyFile(GetSpecialFolderLocation(16)+"1.jpg",GetSpecialFolderLocation(16)+"Новая папка")
Debug q

Отредактировано Lucagin (11.02.2011 01:09:59)

0

272

Lucagin написал(а):

А так не работает:

А так?

Код:
q=CopyFile(GetSpecialFolderLocation(16)+"1.jpg",GetSpecialFolderLocation(16)+"Новая папка\1.jpg")
Debug q

0

273

Пётр написал(а):

А так?

Так работает, Спасибо!!! :cool:

Отредактировано Lucagin (11.02.2011 01:47:29)

0

274

Еще уж в догонку, может скажешь в какой доп. Библиотеке их искать. Есть ли какие-то команды, чтобы 2D-спрайты, можно было поворачивать и зеркально отображать??? А то из встроенных команд, для 3d-спрайтов поворот есть, а для 2D не нашел…
Можно конечно, любую картинку представить в виде массива цветных пикселей, а потом их перерисовать в любой зависимости, под любым углом и даже зеркально, но вдруг уже есть готовые функции, способные это делать? :question:

Отредактировано Lucagin (11.02.2011 02:06:58)

0

275

Lucagin написал(а):

Есть ли какие-то команды, чтобы 2D-спрайты, можно было поворачивать и зеркально отображать??? А то из встроенных команд, для 3d-спрайтов поворот есть, а для 2D не нашел

А почему бы не использовать 3D?

Lucagin написал(а):

Можно конечно, любую картинку представить в виде массива цветных пикселей, а потом их перерисовать в любой зависимости, под любым углом и даже зеркально

Это снизит скорость работы программы, ведь в этом случае, пересчет выполняется процессором, а при использовании 3D, перерасчет будет выполнять видеокарта, а процессор тем временем, займется другими делами, что снизит нагрузку на него и позволит программе выполнятся быстрее.

0

276

Пётр написал(а):

А почему бы не использовать 3D?

Да я собственно до 3D-спрайтов еще не дошел, только начал 2D осваивать. :blush:
А при использовании 3D-спрайтов, кантику ни них надо загружать уже 3D-модель или обычную картинку тоже можно??? :question:

Отредактировано Lucagin (11.02.2011 14:05:24)

0

277

Lucagin написал(а):

А при использовании 3D-спрайтов, кантику ни них надо загружать уже 3D-модель или обычную картинку тоже можно???

Можно обычную картинку.
3D спрайт создается из обычного 2D спрайта, который загружен как текстура

Код:
  LoadSprite(4, "Data/Geebee2.bmp", #PB_Sprite_Texture)
  CreateSprite3D(0, 4)

0

278

Пётр написал(а):

Можно обычную картинку.3D спрайт создается из обычного 2D спрайта, который загружен как текстура

Надо будет попробовать. Тут конечно еще разбираться и разбираться… :о)) Одних режимов спрайта с альфа каналом 3-ри или 4 , нафига половина из них нужна вообще не понятно…
DisplayTransparentSprite() рисует Спрайт с  прозрачным цветом (т.е. скрывая прозрачный цвет), зачем остальные режимы с альфа нужны мне пока сложно представить… %-)

Отредактировано Lucagin (11.02.2011 15:45:33)

0

279

Тут попробовал сделать поворот матрицы пикселей. Зеркальное отображение идет без проблем, там все просто, а вот с поворотом проблемы, не могу догнать логику.

Делаю так:
Делаю поворот относительно центра картинки Xo,Yо. Относительно центра, представляю каждый пиксель так: Ха=Хо+R*cos(α); Ya=Yo+R*sin(α). Зная координаты пикселя и координаты центра, определяю радиус(расстояние от пикселя до центра), как корень из суммы квадратов катетов. R=√(2&〖(Xa-Xo)〗^2+(〖Ya-Yo)〗^2 )
Далее предполагаю, что поворот каждого пикселя относительно центра будет, как смещение координат этого пикселя по окружности с радиусом R, в ту или другую сторону, в зависимости от угла поворота. 
Теперь предположим, что выбрал угол смещения β=30 градусов по Ч.С.  (т.е. угол уменьшаем).
Тогда новые  координаты этого пикселя запишутся:  Хb=Хо+R*cos(α-β); Yb=Yo+R*sin(α-β).
Так же можно записать, что cos(α)=(Xa-Xo)/R, тогда в радианах угол α=ArcCos((Xa-Xo)/R). Синус аналогично.
И следовательно, новые координаты пикселя, со смещением будут: Хb=Хо+R*cos(ArcCos((Xa-Xo)/R)-β*π/180); Yb=Yo+R*sin(ArcSin((Ya-Yo)/R)-β*π/180)
Так вот, не могу понять, почему программа каждую четверть картинки вращает по разному. При 180 град., поворот отображается правильно…
Что-то я совсем запутался в этой тригонометрии… !?? Похоже, что по моей логике вращается только первая четверть изображения… При повороте смещаю центр изображения, чтобы не выйти за границы рисунка…

здесь архив с картинкой: http://ifolder.ru/21848080

Код:
;{ константы и переменные
Enumeration
  #Window_0
EndEnumeration

;- Gadget Constants
;
Enumeration
  #Image_0
  #Button_0
  #Button_1
  #Image_1
EndEnumeration

;- Fonts
Global FontID2
FontID2 = LoadFont(2, "Arial", 16)
;- Image Plugins

UseJPEGImageDecoder()
;- Image Globals
Global Image0

;- Catch Images
Image0 = CatchImage(0, ?Image0)

;- Images
DataSection
Image0:
  IncludeBinary "Tarakan.JPG"
EndDataSection

Global Dim ArrayImage(300,300)

;}

Procedure Open_Window_0()
  If OpenWindow(#Window_0, 235, 0, 800, 800, "New window ( 0 )",  #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_SizeGadget | #PB_Window_TitleBar | #PB_Window_WindowCentered )
    ;If CreateGadgetList(WindowID(#Window_0))
      LoadImage( #Image_0, "Tarakan.JPG")
      ImageGadget(#Image_0, 20, 20, 300, 300, ImageID(#Image_0))
      ButtonGadget(#Button_0, 30, 450, 230, 50, "Поворот")
      SetGadgetFont(#Button_0, FontID2)
      ButtonGadget(#Button_1, 430, 450, 230, 50, "Зерк.Отображение")
      SetGadgetFont(#Button_1, FontID2)
      CreateImage(#Image_1,800,800)
      ImageGadget(#Image_1, 370, 20, 300, 300, 0)
      
    ;EndIf
  EndIf
EndProcedure

Procedure Array_new()
  If StartDrawing(ImageOutput(#Image_0))
       For y=0 To 299
         For x=0 To 299
           ArrayImage(x, y) = Point(x, y)
         Next x
       Next y
     StopDrawing()
  EndIf   
EndProcedure

Procedure mirror()
  If StartDrawing(ImageOutput(#Image_1))     
    ;Box(0, 0, 300, 300, RGB(255,255,255))
        For y=0 To 299
           For x=0 To 299
             Plot(x, y,ArrayImage(300-x, y))
           Next x
         Next y
     StopDrawing()
   SetGadgetState(#Image_1,ImageID(#Image_1))   
  EndIf       
     
EndProcedure

Procedure angle(a)
  If StartDrawing(ImageOutput(#Image_1))
        Box(0, 0, 800, 800, RGB(0,255,0))
          For y=0 To 300 
            For x=0 To 300 
              R.f=Sqr(Pow(x-150,2)+Pow(y-150,2))
              If r=0
                Continue ; Чтобы не было деления на ноль...
              EndIf                
              Xn.f=300+R*Cos(ACos((x-150)/R)-a*#PI/180)
              Yn.f=300+R*Sin(ASin((y-150)/R)-a*#PI/180)
              Plot(Xn,Yn,ArrayImage(x, y))
            Next x
          Next y
     StopDrawing()
     SetGadgetState(#Image_1,ImageID(#Image_1))   
  EndIf     
    
EndProcedure


Open_Window_0()
Array_new()

Repeat : event=WaitWindowEvent() : Gadget=EventGadget()
  If event=#PB_Event_Gadget 
    If     Gadget=#Button_1
      mirror()
    ElseIf Gadget=#Button_0
      angle(60)
    EndIf
  EndIf
    
Until event=#PB_Event_CloseWindow

увеличить

увеличить

Отредактировано Lucagin (11.02.2011 19:11:26)

0

280

Пример из КодАрхива:

Код:
; German forum: http://www.purebasic.fr/german/viewtopic.php?t=4512&highlight=
; Author: PureLust (updated for PB 4.00 by Andre)
; Date: 03. October 2005
; OS: Windows
; Demo: Yes

DisableDebugger

Define.w OrigBreite,OrigHoehe,OrigXDrehpunkt,OrigYDrehpunkt,ZielBreite,ZielHoehe,Rand

; Standardvariablen definieren
#GFX_Mittelwertfilter = 1
OrigBreite=220
OrigHoehe=200
OrigXDrehpunkt=45
OrigYDrehpunkt=45
ZielBreite=OrigBreite
ZielHoehe=OrigHoehe
Rand=20
Filterung.b=#GFX_Mittelwertfilter
Filterung.b=0
Dim OrigPoint(OrigBreite+1,OrigHoehe+1)

If OpenWindow(0,10,10,OrigBreite*2+Rand*3,OrigHoehe+Rand*2," 2D Image-Rotation  <ESC>-Ende   <Space>-Pause   <F>-Filter",#PB_Window_SystemMenu)
  If CreateImage(1,OrigBreite,OrigHoehe)
    ; original Ausgangsbild erzeugen
    If StartDrawing(ImageOutput(1))
      Box(1,1,OrigBreite-2,OrigHoehe-2,RGB(255,255,255))
      Box(20,30,OrigBreite-40,30,RGB(20,200,200))
      ;Circle(OrigXDrehpunkt,OrigYDrehpunkt,4,RGB(0,0,255))
      ;Circle(OrigXDrehpunkt,OrigYDrehpunkt,2,RGB(255,255,255))
      Circle(40,OrigHoehe-41,30,RGB(200,33,33))
      ; Daten des Originalbildes in einem Array zwischenspeichern
      For x.w = 1 To OrigBreite
        For y.w = 1 To OrigHoehe
          OrigPoint(x,y)=Point(x-1,y-1)
        Next y
      Next x
      StopDrawing()
    EndIf
    If StartDrawing(WindowOutput(0))
      Hintergrundfarbe = Point(1,1)
      ; Im Bildpuffer einen Rahmen in Hintergrundfarbe um das Bild legen (fьr Filter)
      For x=0 To OrigBreite : OrigPoint(x,0)=Hintergrundfarbe : OrigPoint(x,OrigHoehe+1)=Hintergrundfarbe  : Next x
      For Y=0 To OrigHoehe  : OrigPoint(0,y)=Hintergrundfarbe : OrigPoint(OrigBreite+1,y)=Hintergrundfarbe : Next y
      ; Originalbild auf Fenster ausgeben
      OrigImageID=ImageID(1)
      DrawImage(OrigImageID,Rand,Rand)
      StopDrawing()
    EndIf
    If CreateImage(2,ZielBreite,ZielHoehe)
      Repeat
        For w = 0 To 359
          Winkel.f = 3.141/180*w
          ; mehrfach benutzte Berechnungen puffern
          SinWinkel.f = Sin(Winkel)
          CosWinkel.f = Cos(Winkel)
          ZielImageID=ImageID(2)
          If StartDrawing(ImageOutput(2))
            ; Zielimage lцschen
            Box(0,0,ZielBreite,ZielHoehe,Hintergrundfarbe)
            StartTimer = ElapsedMilliseconds()
            For x.w = 1 To OrigBreite
              ; mehrfach benutzte Berechnungen puffern
              xSinWinkel.f = (x-OrigXDrehpunkt)*SinWinkel
              xCosWinkel.f = (x-OrigXDrehpunkt)*CosWinkel
              For y.w = 1 To OrigHoehe
                zx.f=(xCosWinkel-(y-OrigYDrehpunkt)*SinWinkel)+OrigXDrehpunkt
                zy.f=(xSinWinkel+(y-OrigYDrehpunkt)*CosWinkel)+OrigYDrehpunkt
                Select Filterung
                  Case #GFX_Mittelwertfilter
                    ; Berechnung mit Filter
                    zxi = Int(zx+0.5)
                    zyi = Int(zy+0.5)
                    If zx>0 And zx<ZielBreite+1 And zy>0 And zy<ZielHoehe+1
                      PixelFarbe1 = OrigPoint(zxi,zyi)
                      If zx<zxi
                        PixelFarbe2 = OrigPoint(zxi-1,zyi)
                      Else
                        PixelFarbe2 = OrigPoint(zxi+1,zyi)
                      EndIf
                      Gewichtung2.f=Abs(zx-zxi)
                      If zy>zyi
                        PixelFarbe3 = OrigPoint(zxi,zyi+1)
                      Else
                        PixelFarbe3 = OrigPoint(zxi,zyi-1)
                      EndIf
                      Gewichtung3.f=Abs(zy-zyi)
                      Gewichtung1.f=1-Gewichtung2-Gewichtung3
                      ; Pixelgewichtung berechnen
                      PixelRed=Red(PixelFarbe1)*Gewichtung1+Red(PixelFarbe2)*Gewichtung2+Red(PixelFarbe3)*Gewichtung3
                      PixelGreen=Green(PixelFarbe1)*Gewichtung1+Green(PixelFarbe2)*Gewichtung2+Green(PixelFarbe3)*Gewichtung3
                      PixelBlue=Blue(PixelFarbe1)*Gewichtung1+Blue(PixelFarbe2)*Gewichtung2+Blue(PixelFarbe3)*Gewichtung3
                      Plot(x-1,y-1,RGB(PixelRed,PixelGreen,PixelBlue))
                    EndIf
                  Default
                    ; Berechnung ohne Filter
                    If zx>=1 And zx<ZielBreite+1 And zy>=1 And zy<ZielHoehe+1
                      Plot(x-1,y-1,OrigPoint(Int(zx),Int(zy)))
                    EndIf
                EndSelect
              Next y
            Next x
            StopDrawing()
            SetWindowTitle(0," 2D Image-Rotation  <ESC>-Ende   <Space>-Pause   <F>-Filter     FPS: "+Str(1000/(ElapsedMilliseconds()-StartTimer+1)))
          EndIf
          If StartDrawing(WindowOutput(0))
            ; gedrehtes Image auf Fenster ausgeben
            DrawImage(ZielImageID,rand*2+OrigBreite,Rand)
            StopDrawing()
          EndIf
          Event=WindowEvent()
          If Event = #WM_KEYDOWN
            If EventwParam() = #VK_SPACE
              Repeat
                Event=WaitWindowEvent()
              Until Event = #WM_KEYDOWN
            ElseIf EventwParam() = #VK_F
              Filterung = #GFX_Mittelwertfilter-Filterung
            ElseIf EventwParam() = #VK_ESCAPE
              Break 2
            EndIf
          EndIf
        Next w
      ForEver
    EndIf
  EndIf
EndIf
End

0

281

Задачу решил, вернее подглядел, здесь: http://compgraphics.info/2D/matrix_rotate.php
Но осталось несколько вопросов по существу!!!
1.Встроке 40  загружаю изображение из файла (LoadImage( #Image_0, "Tarakan.JPG"). Можно ли здесь сделать загрузку  из памяти, чтобы потом открыть это изображение для рисования на нем???
2.в процедуре Array_new() запоминаю цвет пикселей в массив, почему при  выполнении команды Point(x,y),когда X или Y = 300 , программа пишет, что происходит выход за границы рисунка, ведь 300 пиксель существует. Из за этого получается, что полоска в один пиксель не закрашена…
3.Почему возникают артефакты на изображении при вращении, причина в округлениях при вычислении, или в чем-то еще???


Код:
;{ константы и переменные
Enumeration
  #Window_0
EndEnumeration

;- Gadget Constants
;
Enumeration
  #Image_0
  #Button_0
  #Button_1
  #Image_1
EndEnumeration

;- Fonts
Global FontID2
FontID2 = LoadFont(2, "Arial", 16)
;- Image Plugins

UseJPEGImageDecoder()
;- Image Globals
Global Image0

;- Catch Images
Image0 = CatchImage(0, ?Image0)

;- Images
DataSection
Image0:
  IncludeBinary "Tarakan.JPG"
EndDataSection

Global Dim ArrayImage(300,300)

;}

Procedure Open_Window_0()
  If OpenWindow(#Window_0, 235, 0, 800, 800, "New window ( 0 )",  #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_SizeGadget | #PB_Window_TitleBar | #PB_Window_WindowCentered )
    ;If CreateGadgetList(WindowID(#Window_0))
      LoadImage( #Image_0, "Tarakan.JPG")
      ImageGadget(#Image_0, 20, 20, 300, 300, ImageID(#Image_0))
      ButtonGadget(#Button_0, 30, 450, 230, 50, "Поворот")
      SetGadgetFont(#Button_0, FontID2)
      ButtonGadget(#Button_1, 430, 450, 230, 50, "Зерк.Отображение")
      SetGadgetFont(#Button_1, FontID2)
      CreateImage(#Image_1,450,450)
      ImageGadget(#Image_1, 370, 20, 300, 300, 0)
      
    ;EndIf
  EndIf
EndProcedure

Procedure Array_new()
  If StartDrawing(ImageOutput(#Image_0))
       For y=0 To 299
         For x=0 To 299
           ArrayImage(x, y) = Point(x, y)
         Next x
       Next y
     StopDrawing()
  EndIf   
EndProcedure

Procedure mirror()
  If StartDrawing(ImageOutput(#Image_1))     
    Box(0, 0, 450, 450, RGB(255,255,255))
        For y=0 To 299
           For x=0 To 299
             Plot(x, y,ArrayImage(300-x, y))
           Next x
         Next y
     StopDrawing()
   SetGadgetState(#Image_1,ImageID(#Image_1))   
  EndIf       
     
EndProcedure

Procedure angle(a.f)
  If StartDrawing(ImageOutput(#Image_1))
        Box(0, 0, 450, 450, RGB(255,255,255))
          For y=0 To 300 
            For x=0 To 300 
              ;R.f=Sqr(Pow(x-150,2)+Pow(y-150,2))
              ;If r=0
                ;Continue
              ;EndIf                
              ;Xn.f=300+R*Cos(ACos((x-150)/R)-a*#PI/180)
              ;Yn.f=300+R*Sin(ASin((y-150)/R)-a*#PI/180)
              ;Plot(Xn,Yn,ArrayImage(x, y))
              Plot(220+((x-150)*Cos(a)-(y-150)*Sin(a)),220+((x-150)*Sin(a)+(y-150)*Cos(a)),ArrayImage(x, y))
            Next x
          Next y
     StopDrawing()
     SetGadgetState(#Image_1,ImageID(#Image_1))   
  EndIf     
    
EndProcedure


Open_Window_0()
Array_new()
z=0
Repeat : event=WaitWindowEvent() : Gadget=EventGadget()
  If event=#PB_Event_Gadget 
    If     Gadget=#Button_1
      mirror()
    ElseIf Gadget=#Button_0
      z+10
      angle(z*#PI/180)
    EndIf
  EndIf
    
Until event=#PB_Event_CloseWindow
Пётр написал(а):

Пример из КодАрхива:

Спасибо, Пётр, за пример, буду изучат его!  Но вопросы в  посте остаются, особенно 2, с этим постоянно приходится сталкиваться…

Отредактировано Lucagin (11.02.2011 21:50:10)

0

282

Lucagin написал(а):

1.Встроке 40  загружаю изображение из файла (LoadImage( #Image_0, "Tarakan.JPG"). Можно ли здесь сделать загрузку  из памяти, чтобы потом открыть это изображение для рисования на нем???

Замени LoadImage на CatchImage
У тебя в первых строках ведь загружается требуемый рисунок, или что что-то не так понял?

Код:
;- Catch Images
Image0 = CatchImage(0, ?Image0)

;- Images
DataSection
Image0:
  IncludeBinary "Tarakan.JPG"
EndDataSection

+1

283

Пётр написал(а):

Замени LoadImage на CatchImage

Да, точно, теперь работает, немного с идентификатором напутал, надо было так написать: Image0=CatchImage(#PB_Any, ?Image0) и потом как идентификатор использовать Image0,а с нулём я намудрил что-то и ошибки выпадали, потому и ввел LoadImage()...

Отредактировано Lucagin (11.02.2011 22:14:56)

0

284

Если программа будет использоваться графический режиме, то почему бы не использовать 3D?

Код:
UsePNGImageDecoder()

Enumeration
	#SPRITE_2D
	#SPRITE_3D
	#SPRITE_3D_Zoom
EndEnumeration


;Simple error checking procedure
Procedure HandleError(Result.l, Text.s)
	If Result = 0
    MessageRequester("Error", Text, #PB_MessageRequester_Ok)
    End
	EndIf
EndProcedure

;Initialize environment
HandleError(InitSprite(), "InitSprite() command failed.")
HandleError(InitSprite3D(), "InitSprite3D() command failed.")
HandleError(InitKeyboard(), "InitKeyboard() command failed.")
HandleError(OpenScreen(800, 600, 32, "Flowers",#PB_Screen_SmartSynchronization), "Could not open screen.")
SetFrameRate(60)
Sprite3DQuality(1)

;Load sprite
LoadSprite(#SPRITE_2D,"Flower.png",#PB_Sprite_Texture|#PB_Sprite_AlphaBlending)
CreateSprite3D(#SPRITE_3D, #SPRITE_2D)
CreateSprite3D(#SPRITE_3D_Zoom, #SPRITE_2D)

;Main loop
x=0
Zoom.a=255 : st=0
Repeat

  ClearScreen(RGB(200, 100, 100))
  
  If Start3D()
    RotateSprite3D(#SPRITE_3D,x, 0)
    DisplaySprite3D(#SPRITE_3D, 200, 100)
    x+1
    
    ZoomSprite3D(#SPRITE_3D_Zoom, Zoom+10, Zoom+10)
    DisplaySprite3D(#SPRITE_3D_Zoom, 500, 300)
    
    If st=0
      Zoom-1
      If Zoom<2
        st=1
      EndIf
    Else
      Zoom+1
      If Zoom>250
        st=0
      EndIf
    EndIf
    
    Stop3D()
  EndIf

             FlipBuffers()
  
	ExamineKeyboard()
	
Until KeyboardReleased(#PB_Key_Escape)
End

Файлы

0

285

Пётр написал(а):

Если программа будет использоваться графический режиме, то почему бы не использовать 3D?

Может ты и прав, всё остальное, всего  лишь жалкая пародия этого…  :rolleyes:

Отредактировано Lucagin (12.02.2011 03:43:08)

0

286

Уже хотел было завязывать с 2D-рисованием, но неожиданно интересный эффект получился…:о)) :blush:
Файл-архив: http://ifolder.ru/21854687

Почему всетаки возникает ошибка (выход за пределы изображения) в случае, когда есть рисунок 300х300, и использую команду Point(x,y), когда X или Y = 300??? Задавал этот вопрос в посте 281...  :question:

Код:
;{ константы и переменные
Enumeration
  #Window_0
EndEnumeration

;- Gadget Constants
;
Enumeration
  #Image_0
  #Button_0
  #Button_1
  #Image_1
EndEnumeration

;- Fonts
Global FontID2
FontID2 = LoadFont(2, "Arial", 16)
;- Image Plugins

UseJPEGImageDecoder()
;- Image Globals
Global Image0

;- Catch Images
Image0 = CatchImage(#PB_Any, ?Image0)

;- Images
DataSection
Image0:
  IncludeBinary "Tarakan.JPG"
EndDataSection

Global Dim ArrayImage(300,300)
Global Z
;}

Procedure Open_Window_0()
  If OpenWindow(#Window_0, 235, 0, 850, 650, "New window ( 0 )",  #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_TitleBar | #PB_Window_WindowCentered )
    ;If CreateGadgetList(WindowID(#Window_0))
      ;LoadImage( #Image_0, "Tarakan.JPG")
      ImageGadget(#Image_0, 20, 20, 300, 300, ImageID(Image0))
      ButtonGadget(#Button_0, 30, 550, 230, 50, "Поворот")
      SetGadgetFont(#Button_0, FontID2)
      ButtonGadget(#Button_1, 430, 550, 230, 50, "Зерк.Отображение")
      SetGadgetFont(#Button_1, FontID2)
      CreateImage(#Image_1,480,500)
      ImageGadget(#Image_1, 370, 20, 300, 300, 0)
      
    ;EndIf
  EndIf
EndProcedure

Procedure Array_new()
  If StartDrawing(ImageOutput(Image0))
       For y=1 To 299
         For x=1 To 299
           ArrayImage(x, y) = Point(x, y)
         Next x
       Next y       
     StopDrawing()
  EndIf   
EndProcedure

Procedure mirror()
  If StartDrawing(ImageOutput(#Image_1))     
    Box(0, 0, 500, 500, RGB(0,255,0))
        For y=0 To 300
           For x=0 To 300
             Plot(x, y,ArrayImage(300-x, y))
           Next x
         Next y
     StopDrawing()
   SetGadgetState(#Image_1,ImageID(#Image_1))   
  EndIf        
EndProcedure

Procedure angle()
  a.f=Z*#PI/180
  If StartDrawing(ImageOutput(#Image_1))
        Box(0, 0, 500, 500, RGB(0,255,0))
          For y=0 To 300 
            For x=0 To 300 
              R.f=Sqr(Pow(x-150,2)+Pow(y-150,2))
              If r=0
                Continue
              EndIf                
              Xn.f=250+R*Cos(ACos((x-150)/(1.5*R))-a*#PI/180)
              Yn.f=250+R*Sin(ASin((y-150)/(1.5*R))-a*#PI/180)
              Plot(Xn,Yn,ArrayImage(x, y))
              ;Plot(220+((x-150)*Cos(a)-(y-150)*Sin(a)),220+((x-150)*Sin(a)+(y-150)*Cos(a)),ArrayImage(x, y)) ; Это если нужен обычный поворот...
            Next x
          Next y
     StopDrawing()
     SetGadgetState(#Image_1,ImageID(#Image_1))   
  EndIf     
    Z+50
EndProcedure


Open_Window_0()
Array_new()
Z=0

Repeat : event=WaitWindowEvent() : Gadget=EventGadget()
  If event=#PB_Event_Gadget 
    If     Gadget=#Button_1
      mirror()
    ElseIf Gadget=#Button_0
       SetTimer_(WindowID(#Window_0), 0, 100, @angle() )                  
    EndIf
  EndIf
  If Z>36000
     KillTimer_(WindowID(#Window_0),0)
     Z=0      
   EndIf
  
 Until event=#PB_Event_CloseWindow : KillTimer_(WindowID(#Window_0),0) : End

Отредактировано Lucagin (12.02.2011 11:41:08)

0

287

А какой размер Windows экрана? Например 2000 Х 4000.

0

288

Иван написал(а):

А какой размер Windows экрана?

Нужно узнать разрешение экрана?

Код:
NbDesktops = ExamineDesktops()

MessageRequester("Information", "You have "+Str(NbDesktops)+" desktop(s)")

; Let's enumerate all the desktops found
;
For k=0 To NbDesktops-1
  
  Text$ = "Desktop n°"+Str(k+1)+#LF$+#LF$
  Text$ + "Size: "+Str(DesktopWidth(k))+"*"+Str(DesktopHeight(k))+#LF$
  Text$ + "Color depth: "+Str(DesktopDepth(k))+#LF$
  
  If DesktopFrequency(k) = 0
    Text$ + "Frequency: Default"+#LF$+#LF$
  Else
    Text$ + "Frequency: "+Str(DesktopFrequency(k))+" Hz"+#LF$+#LF$
  EndIf
  
  Text$ + "Name: "+DesktopName(k)
  
  MessageRequester("Information", Text$)
next
Lucagin написал(а):

Уже хотел было завязывать с 2D-рисованием, но неожиданно интересный эффект получился…:о))  Файл-архив: http://ifolder.ru/21854687

Прикольно. Похоже на деформацию 3D объекта с натянутой текстурой.

Lucagin написал(а):

Почему всетаки возникает ошибка (выход за пределы изображения)

Возможно глюк в текущей версии.
В 4.31 и в более ранних версиях, вроде на наблюдается подобного.

0

289

ButtonGadget(2, 48, 180, 60, 60,"1") - этот гаджет я открыл и хочу через какое-то время закрыть.
А как это сделать?
Как закрывать гаджеты?

0

290

Если просто скрыть (не уничтожая), то так

Код:
HideGadget(2, 1)

ну а если нужно уничтожить, то так:

Код:
FreeGadget(2)

0

291

q.f=11.5
Debug q.f
Debug Str(q.f)

это фрагмент прогграммы, q.f - как-бы дробное число. Когда я его пишу в виде числа то всё нормально, но когда певожу в строку то число округляется. Ну а мне нужно чтоб число переводилось в строку, но при этом не округлялось. А как это сделать?

0

292

Код:
q.f=11.5
Debug q
Debug StrF(q)

0

293

Debug StrF(q)

но тут же выходит 11.500000 а не 11.5.
Число ж немного изменяется.
А как чтоб 11.5 вылетало?

0

294

Можно указать сколько знаков после запятой будет отображено.
Если нужно отображать только один знак

Код:
q.f=11.5
Debug q
Debug StrF(q, 1)

А если нужно отбросить незначащие нули в дробной части числа, то код будет такой:

Код:
Procedure.s DelNull(String.s)
Protected Result.s
Result=String

Pos=FindString(String, ".", 1)
If Pos>0
  Len=Len(String)
  For i=Len To Pos Step -1
    Char.s=Mid(String, i, 1)
    If Char="."
      i-1
      Break
    ElseIf Char<>"0"
      Break
    EndIf
  Next i
  
  If i<Len
    Result=Left(String, i)
  EndIf
EndIf

ProcedureReturn Result
EndProcedure

q.f=11.5
Debug q
Debug DelNull(StrF(q))

0

295

Пётр написал(а):

Прикольно. Похоже на деформацию 3D объекта с натянутой текстурой.

Ещё бы  научиться управлять этим процессом. Пока эффект получился случайно, изначально думал что получится простой поворот… :о)

А вот интересно, если в PB делать читалку для книжек. Можно ли как-то реализовать анимированное перелистывание страницы? Или получится только имитация, когда реально перелистываться будет какой-то левый текст, а не тот, что был выведен??? Если использовать  3D, можно на сетку наложить текстуру в виду фотки страницы текста, а потом эту модель трансформировать под перелистывание? Или трансформация во строенном движке не возможна?

И еще,  здесь (http://purebasic.info/phpBB2/viewtopic. … mp;start=0) обсуждалась тема использования шкурок (скинов) для программ. Хотел бы уточнить использование самой библиотеки является свободным или она тоже платная? И на сколько легко уличить пользователя, что он не законно её использует в своей программе, если модуль встроен в экзешку??? В случае написания бесплатной, но с авторством программы, могул ли быть претензии от правообладателей программы???

Отредактировано Lucagin (13.02.2011 22:43:53)

0

296

Lucagin написал(а):

Если использовать  3D, можно на сетку наложить текстуру в виду фотки страницы текста, а потом эту модель трансформировать под перелистывание? Или трансформация во строенном движке не возможна?

Есть функция TransformSprite3D

Lucagin написал(а):

Хотел бы уточнить использование самой библиотеке является свободной или она тоже платная?

Платная, но есть триал-режим.

Lucagin написал(а):

И на сколько легко уличить пользователя, что он не законно её использует в своей программе, если модуль встроен в экзешку??

Если нужно, все можно доказать, но на практике, нужно чтобы очень "повезло" (заинтересовались соответствующие люди) чтобы начали копаться в программе. Если программа бесплатна или стоит копейки, то как правило, никто не проверяет лицензионность софта, использованного при её создании.

0

297

StringGadget(1, 36, 24, 408, 42, "текст") - при этом коде будет в окне отображаться строка для ввода текста, но перед тем как вводить текст придётся счёлкнуть по редактору. А как сделать чтоб при появление окошка для ввода текста в нём уже автоматически мигал курсор? Может флаг какойнибудь?

0

298

Пётр написал(а):

Есть функция TransformSprite3D

Очень интересно, надо будет попробовать, правда из описания справки сложно представить что получится… :no:

Пётр написал(а):

Платная, но есть триал-режим.

Понимаю триал режим для их программы рисование шкурок, а как триал для бибиотеки? Т.е. делаю программу с такой шкуркой, и что, через30 дней она перестает функционировать внутри программы? Или тут триал ограничена функционально а не по времени?

Отредактировано Lucagin (13.02.2011 23:15:56)

0

299

Илья написал(а):

StringGadget(1, 36, 24, 408, 42, "текст") - при этом коде будет в окне отображаться строка для ввода текста, но перед тем как вводить текст придётся счёлкнуть по редактору. А как сделать чтоб при появление окошка для ввода текста в нём уже автоматически мигал курсор? Может флаг какойнибудь?

SetActiveGadget(#Gadget)
Описание

Активирует (устанавливает фокус) определенный #Gadget. В основном это используется с ComboBoxGadget() и StringGadget(). При получении фокуса гаджет становится активным, что позволяет принимать данные и оперировать сочетаниями клавиш.
В справке есть пример на эту команду...

0

300

Lucagin написал(а):

Очень интересно, надо будет попробовать, правда из описания справки сложно представить что получится…

В КоАрхиве есть несколько примеров, вот один из них:

Код:
; German forum: http://www.purebasic.fr/german/archive/viewtopic.php?t=2205&postdays=0&postorder=asc&start=40
; Author: Dennis (improved by Thorsten, Deeem2031, etc., updated for PB4.00 by blbltheworm)
; Date: 11. September 2003
; OS: Windows
; Demo: No


;/ Mission-IsoScroll 

Declare CreateSprites() 
Declare DrawGrid() 
Declare DrawRect();X1, Y1, X2, Y2, Color.l) 

Structure DrawRect 
  X1.l 
  Y1.l 
  X2.l 
  Y2.l 
  Color.l 
EndStructure 

Global SinCounter.l,TimeStamp.l 

#ColorSet = 2 
#TexMode = 1 ;( 0:Colored 1:ThinBordered 2:FatBordered: 3: BorderEffect  ) 

#GridStartX = 50 
#GridStartY = 250 
#GridWidth = 70 
#GridHeight = 10 
#XWobble = 10 
#YWobble = 10 

Structure Point2d 
  x.w 
  y.w 
EndStructure 

If InitMouse() = 0 Or InitKeyboard() = 0 Or InitSprite() = 0 Or InitSprite3D() = 0 
  End 
EndIf 

Global Dim HeightData(#GridWidth, #GridHeight) 
Global Dim FastSinus.f(3599) 
Procedure InitFastSinus() 
  Protected a.l 
  For a = 0 To 3599 
    FastSinus(a) = Sin(a * #PI / 1800) 
  Next 
EndProcedure 
InitFastSinus() 

  Text.s = "MORPHOSS" 
  Length = Len(Text) - 1 
  
  For Pos = 0 To Length 
    *T.Byte = @Text + Pos 
    
    For M = 0 To 7 
      For n = 0 To 7 
        *Block.Byte = ?FontData + ((*T\B - 65) * 64) + n + M * 8 
        HeightData(n + Pos * 8, M + 1) = *Block\B 
      Next 
    Next 
  Next 
  
  If OpenScreen(800, 600, 32, "")  
    
    CreateSprites() 
    
    Repeat 
      
      ClearScreen(RGB(0,0,0)) 
      
      FPSCounter + 1 
      
      GetTickCount_() 
      !CMP Eax,dword[v_TimeStamp] 
      !JL l_asm_endif 
        !ADD Eax,1000 
        !MOV dword[v_TimeStamp],Eax 
        LastFPSCounter.s = Str(FPSCounter) + " FPS" 
        FPSCounter = 0 
      asm_endif: 
      
      StartDrawing(ScreenOutput()) 
      FrontColor(RGB(255,255,255)) 
      BackColor(RGB(0,0,0)) 
      DrawText(5, 5,LastFPSCounter) 
      StopDrawing()  
      
      DrawGrid()  
      
      FlipBuffers() 
      ExamineKeyboard() 
      
    Until KeyboardPushed(#PB_Key_All) 
  EndIf 
  
  
  Procedure DrawGrid() 
    
    Protected y.l, Sinus.f, winkel.l, M.l, n.l 
    Protected *Word.Word, Last.l, XCubes.l, YCubes.l 
    y = #GridStartY  
    Last = 999 
    
    
    Start3D() 
    For XCubes = 0 To #GridWidth 
      For YCubes = 0 To #GridHeight 
        
        For M = 0 To 2 
          For n = 0 To 3 
            
            If HeightData(XCubes, YCubes) = 1 
              *Word = ?IsoCubeHigh + (n + M * 4) * 4  
            Else 
              *Word = ?IsoCube + (n + M * 4) * 4  
            EndIf 
            
            Erg1 = *Word\w 
            
            *Word + 2 
            Erg2 = *Word\w 
            
            If Last <> Erg1 
              winkel = (Erg1 + #GridStartX + (10 * XCubes) + SinCounter + (YCubes * #YWobble))*10 
              winkel = winkel - winkel / 3600 * 3600 
              Sinus = FastSinus(winkel) * #XWobble 
              Last = Erg1 
            EndIf 
            
            If n = 0 
              X1 = Erg1 + #GridStartX + (10 * XCubes) - (YCubes * 5) 
              Y1 = Erg2 + y + Sinus + (YCubes * 5) 
            ElseIf n = 1 
              X2 = Erg1 + #GridStartX + (10 * XCubes) - (YCubes * 5) 
              Y2 = Erg2 + y + Sinus + (YCubes * 5) 
            ElseIf n = 2 
              X3 = Erg1 + #GridStartX + (10 * XCubes) - (YCubes * 5) 
              Y3 = Erg2 + y + Sinus + (YCubes * 5) 
            ElseIf n = 3 
              X4 = Erg1 + #GridStartX + (10 * XCubes) - (YCubes * 5) 
              Y4 = Erg2 + y + Sinus + (YCubes * 5) 
            EndIf  
            
          Next 
          
          
          TransformSprite3D(M,X1,Y1,X2,Y2,X3,Y3,X4,Y4) 
          DisplaySprite3D(M,0,0)  
          
          
        Next 
      Next 
    Next 
    
    Stop3D() 
    
    SinCounter + 10 
    
  EndProcedure 
  
  Procedure CreateSprites() 
    Global rect.DrawRect 
    
    For n = 0 To 2 
      CreateSprite(n,32,32,#PB_Sprite_Texture) 
      
      CompilerSelect #ColorSet 
        CompilerCase 0 
          G=0 : B=0 
        CompilerCase 1 
          G=0 : B=200 
        CompilerCase 2 
          G=100 : B=0 
        CompilerCase 3 
          G=100 : B=150 
      CompilerEndSelect 
      
      StartDrawing(SpriteOutput(n)) 
      
      Box(0, 0, 32, 32, (255 - n<<6)+G<<8+B<<16) 
      ;DrawingMode(4) 
      CompilerSelect #TexMode 
        CompilerCase 3 
          For M = 0 To 8 
            rect\X1 = M 
            rect\Y1 = M 
            rect\X2 = 32-M 
            rect\Y2 = 32-M 
            rect\Color = (150+M*10-n<<6+G)<<8+B<<16 
            DrawRect() 
          Next 
        CompilerCase 2 
          For M = 0 To 2 
            rect\X1 = M 
            rect\Y1 = M 
            rect\X2 = 32-M 
            rect\Y2 = 32-M 
            rect\Color = (150+M*10-n<<5)+G<<8+B<<16 
            DrawRect();M,M, 32 - M, 32 - M, (150+M*10-n<<5)+G<<8+B<<16) 
          Next 
        CompilerCase 1 
          rect\X1 = 0 
          rect\Y1 = 0 
          rect\X2 = 32 
          rect\Y2 = 32 
          rect\Color = (150+M*10-n<<5)+G<<8+B<<16 
          DrawRect();0,0,32,32,(150+M*10-n<<5)+G<<8+B<<16) 
      CompilerEndSelect 
      StopDrawing() 
    Next 
    
    For n = 0 To 2 
      CreateSprite3D(n, n) 
    Next 
    
  EndProcedure 
  
  Procedure DrawRect();X1, Y1, X2, Y2, Color.l) 
    LineXY(rect\X1, rect\Y1, rect\X2, rect\Y1, rect\Color) 
    LineXY(rect\X2, rect\Y1, rect\X2, rect\Y2, rect\Color) 
    LineXY(rect\X2, rect\Y2, rect\X1, rect\Y2, rect\Color) 
    LineXY(rect\X1, rect\Y2, rect\X1, rect\Y1, rect\Color) 
  EndProcedure

  DataSection 
  IsoCube: 
  Data.w  0, 0 
  Data.w 10, 0 
  Data.w 10,10 
  Data.w  0,10 
  
  Data.w 0,0 
  Data.w 5,-5 
  Data.w 15,-5 
  Data.w 10,0 
  
  Data.w 10,0 
  Data.w 15,-5 
  Data.w 15,5 
  Data.w 10,10 
  
  IsoCubeHigh: 
  Data.w  0, -5 
  Data.w 10, -5 
  Data.w 10,10 
  Data.w  0,10 
  
  Data.w 0,-5 
  Data.w 5,-10 
  Data.w 15,-10 
  Data.w 10,-5 
  
  Data.w 10,-5 
  Data.w 15,-10 
  Data.w 15,5 
  Data.w 10,10 
  
  
  FontData: 
  
  Data.b 0,0,1,1,1,1,0,0 ;A 
  Data.b 0,1,1,0,0,1,1,0 
  Data.b 0,1,1,0,0,1,1,0 
  Data.b 0,1,1,0,0,1,1,0 
  Data.b 0,1,1,1,1,1,1,0 
  Data.b 0,1,1,0,0,1,1,0 
  Data.b 0,1,1,0,0,1,1,0 
  Data.b 0,1,1,0,0,1,1,0 
  
  Data.b 0,1,1,1,1,1,0,0 ;B 
  Data.b 0,1,1,0,0,1,1,0 
  Data.b 0,1,1,0,0,1,1,0 
  Data.b 0,1,1,1,1,1,0,0 
  Data.b 0,1,1,0,0,1,1,0 
  Data.b 0,1,1,0,0,1,1,0 
  Data.b 0,1,1,0,0,1,1,0 
  Data.b 0,1,1,1,1,1,0,0 
  
  Data.b 0,0,1,1,1,1,0,0 ;C 
  Data.b 0,1,1,0,0,1,1,0 
  Data.b 0,1,1,0,0,0,0,0 
  Data.b 0,1,1,0,0,0,0,0 
  Data.b 0,1,1,0,0,0,0,0 
  Data.b 0,1,1,0,0,0,0,0 
  Data.b 0,1,1,0,0,1,1,0 
  Data.b 0,0,1,1,1,1,0,0 
  
  Data.b 0,1,1,1,1,1,0,0 ;D 
  Data.b 0,1,1,0,0,1,1,0 
  Data.b 0,1,1,0,0,1,1,0 
  Data.b 0,1,1,0,0,1,1,0 
  Data.b 0,1,1,0,0,1,1,0 
  Data.b 0,1,1,0,0,1,1,0 
  Data.b 0,1,1,0,0,1,1,0 
  Data.b 0,1,1,1,1,1,0,0 
  
  Data.b 0,1,1,1,1,1,1,0 ;E 
  Data.b 0,1,1,0,0,1,1,0 
  Data.b 0,1,1,0,0,0,0,0 
  Data.b 0,1,1,1,0,0,0,0 
  Data.b 0,1,1,1,0,0,0,0 
  Data.b 0,1,1,0,0,0,0,0 
  Data.b 0,1,1,0,0,1,1,0 
  Data.b 0,1,1,1,1,1,1,0 
  
  Data.b 0,1,1,1,1,1,1,0 ;F 
  Data.b 0,1,1,0,0,1,1,0 
  Data.b 0,1,1,0,0,0,0,0 
  Data.b 0,1,1,1,0,0,0,0 
  Data.b 0,1,1,1,0,0,0,0 
  Data.b 0,1,1,0,0,0,0,0 
  Data.b 0,1,1,0,0,0,0,0 
  Data.b 0,1,1,0,0,0,0,0 
  
  Data.b 0,0,1,1,1,1,0,0 ;G 
  Data.b 0,1,1,0,0,1,1,0 
  Data.b 0,1,1,0,0,0,0,0 
  Data.b 0,1,1,0,0,0,0,0 
  Data.b 0,1,1,0,1,1,1,0 
  Data.b 0,1,1,0,0,1,1,0 
  Data.b 0,1,1,0,0,1,1,0 
  Data.b 0,0,1,1,1,1,0,0 
  
  Data.b 0,1,1,0,0,1,1,0 ;H 
  Data.b 0,1,1,0,0,1,1,0 
  Data.b 0,1,1,0,0,1,1,0 
  Data.b 0,1,1,1,1,1,1,0 
  Data.b 0,1,1,0,0,1,1,0 
  Data.b 0,1,1,0,0,1,1,0 
  Data.b 0,1,1,0,0,1,1,0 
  Data.b 0,1,1,0,0,1,1,0 
  
  Data.b 0,0,0,1,1,0,0,0 ;I 
  Data.b 0,0,0,1,1,0,0,0 
  Data.b 0,0,0,1,1,0,0,0 
  Data.b 0,0,0,1,1,0,0,0 
  Data.b 0,0,0,1,1,0,0,0 
  Data.b 0,0,0,1,1,0,0,0 
  Data.b 0,0,0,1,1,0,0,0 
  Data.b 0,0,0,1,1,0,0,0 
  
  
  Data.b 0,0,0,0,0,1,1,0 ;J 
  Data.b 0,0,0,0,0,1,1,0 
  Data.b 0,0,0,0,0,1,1,0 
  Data.b 0,0,0,0,0,1,1,0 
  Data.b 0,0,0,0,0,1,1,0 
  Data.b 0,1,1,0,0,1,1,0 
  Data.b 0,1,1,0,0,1,1,0 
  Data.b 0,0,1,1,1,1,0,0 
  
  
  Data.b 0,1,1,0,0,1,1,0 ;K 
  Data.b 0,1,1,0,0,1,1,0 
  Data.b 0,1,1,0,1,1,0,0 
  Data.b 0,1,1,1,1,1,0,0 
  Data.b 0,1,1,0,0,1,1,0 
  Data.b 0,1,1,0,0,1,1,0 
  Data.b 0,1,1,0,0,1,1,0 
  Data.b 0,1,1,0,0,1,1,0 
  
  Data.b 0,1,1,0,0,0,0,0 ;L 
  Data.b 0,1,1,0,0,0,0,0 
  Data.b 0,1,1,0,0,0,0,0 
  Data.b 0,1,1,0,0,0,0,0 
  Data.b 0,1,1,0,0,0,0,0 
  Data.b 0,1,1,0,0,0,0,0 
  Data.b 0,1,1,1,1,1,1,0 
  Data.b 0,1,1,1,1,1,1,0 
  
  
  Data.b 0,1,0,0,0,0,0,1 ;M 
  Data.b 0,1,1,0,0,0,1,1 
  Data.b 0,1,1,1,1,1,1,1 
  Data.b 0,1,1,0,1,0,1,1 
  Data.b 0,1,1,0,0,0,1,1 
  Data.b 0,1,1,0,0,0,1,1 
  Data.b 0,1,1,0,0,0,1,1 
  Data.b 0,1,1,0,0,0,1,1 
  
  Data.b 0,1,0,0,0,0,0,1 ;N 
  Data.b 0,1,1,0,0,0,1,1 
  Data.b 0,1,1,1,0,0,1,1 
  Data.b 0,1,1,1,1,0,1,1 
  Data.b 0,1,1,0,1,1,1,1 
  Data.b 0,1,1,0,0,1,1,1 
  Data.b 0,1,1,0,0,0,1,1 
  Data.b 0,1,1,0,0,0,1,1 
  
  Data.b 0,0,1,1,1,1,0,0 ;O 
  Data.b 0,1,1,0,0,1,1,0 
  Data.b 0,1,1,0,0,1,1,0 
  Data.b 0,1,1,0,0,1,1,0 
  Data.b 0,1,1,0,0,1,1,0 
  Data.b 0,1,1,0,0,1,1,0 
  Data.b 0,1,1,0,0,1,1,0 
  Data.b 0,0,1,1,1,1,0,0 
  
  
  Data.b 0,1,1,1,1,1,0,0 ;P 
  Data.b 0,1,1,0,0,1,1,0 
  Data.b 0,1,1,0,0,1,1,0 
  Data.b 0,1,1,1,1,1,0,0 
  Data.b 0,1,1,0,0,0,0,0 
  Data.b 0,1,1,0,0,0,0,0 
  Data.b 0,1,1,0,0,0,0,0 
  Data.b 0,1,1,0,0,0,0,0 
  
  
  Data.b 0,0,1,1,1,1,0,0 ;Q 
  Data.b 0,1,1,0,0,1,1,0 
  Data.b 0,1,1,0,0,1,1,0 
  Data.b 0,1,1,0,0,1,1,0 
  Data.b 0,1,1,0,0,1,1,0 
  Data.b 0,1,1,0,1,1,1,0 
  Data.b 0,1,1,0,0,1,1,1 
  Data.b 0,0,1,1,1,1,0,0 
  
  
  Data.b 0,1,1,1,1,1,0,0 ;R 
  Data.b 0,1,1,0,0,1,1,0 
  Data.b 0,1,1,0,0,1,1,0 
  Data.b 0,1,1,1,1,1,0,0 
  Data.b 0,1,1,0,0,1,0,0 
  Data.b 0,1,1,0,0,1,1,0 
  Data.b 0,1,1,0,0,1,1,0 
  Data.b 0,1,1,0,0,1,1,0 
  
  Data.b 0,0,1,1,1,1,0,0 ;S 
  Data.b 0,1,1,0,0,1,1,0 
  Data.b 0,1,1,0,0,1,1,0 
  Data.b 0,0,1,1,0,0,0,0 
  Data.b 0,0,0,0,1,1,0,0 
  Data.b 0,1,1,0,0,1,1,0 
  Data.b 0,1,1,0,0,1,1,0 
  Data.b 0,0,1,1,1,1,0,0 
  
  Data.b 0,1,1,1,1,1,1,0 ;T 
  Data.b 0,1,1,1,1,1,1,0 
  Data.b 0,0,0,1,1,0,0,0 
  Data.b 0,0,0,1,1,0,0,0 
  Data.b 0,0,0,1,1,0,0,0 
  Data.b 0,0,0,1,1,0,0,0 
  Data.b 0,0,0,1,1,0,0,0 
  Data.b 0,0,0,1,1,0,0,0 
  
  Data.b 0,1,1,0,0,1,1,0 ;U 
  Data.b 0,1,1,0,0,1,1,0 
  Data.b 0,1,1,0,0,1,1,0 
  Data.b 0,1,1,0,0,1,1,0 
  Data.b 0,1,1,0,0,1,1,0 
  Data.b 0,1,1,0,0,1,1,0 
  Data.b 0,1,1,0,0,1,1,0 
  Data.b 0,0,1,1,1,1,0,0 
  
  Data.b 0,1,1,0,0,1,1,0 ;V 
  Data.b 0,1,1,0,0,1,1,0 
  Data.b 0,1,1,0,0,1,1,0 
  Data.b 0,1,1,0,0,1,1,0 
  Data.b 0,1,1,0,0,1,1,0 
  Data.b 0,1,1,0,0,1,1,0 
  Data.b 0,0,1,1,1,1,0,0 
  Data.b 0,0,0,1,1,0,0,0 
  
  Data.b 0,1,1,0,0,0,1,1 ;W 
  Data.b 0,1,1,0,0,0,1,1 
  Data.b 0,1,1,0,0,0,1,1 
  Data.b 0,1,1,0,0,0,1,1 
  Data.b 0,1,1,0,1,0,1,1 
  Data.b 0,1,1,1,1,1,1,1 
  Data.b 0,1,1,1,0,1,1,1 
  Data.b 0,0,1,0,0,0,1,0 
  
  
  Data.b 0,1,1,0,0,1,1,0 ;X 
  Data.b 0,1,1,0,0,1,1,0 
  Data.b 0,0,1,1,1,1,0,0 
  Data.b 0,0,0,1,1,0,0,0  
  Data.b 0,0,1,1,1,1,0,0 
  Data.b 0,1,1,0,0,1,1,0 
  Data.b 0,1,1,0,0,1,1,0 
  Data.b 0,1,1,0,0,1,1,0 
  
  Data.b 0,1,1,0,0,1,1,0 ;Y 
  Data.b 0,1,1,0,0,1,1,0 
  Data.b 0,0,1,1,1,1,0,0 
  Data.b 0,0,0,1,1,0,0,0  
  Data.b 0,0,0,1,1,0,0,0 
  Data.b 0,0,0,1,1,0,0,0 
  Data.b 0,0,0,1,1,0,0,0 
  Data.b 0,0,0,1,1,0,0,0 
  
  Data.b 0,1,1,1,1,1,1,1 ;Z 
  Data.b 0,1,1,1,1,1,1,0 
  Data.b 0,0,0,0,1,1,0,0 
  Data.b 0,0,0,1,1,0,0,0 
  Data.b 0,0,0,1,1,0,0,0 
  Data.b 0,0,1,1,0,0,0,0 
  Data.b 0,1,1,1,1,1,1,1 ;Z 
  Data.b 0,1,1,1,1,1,1,1 
  
  Data.b 0,0,1,1,1,1,0,0 ;0 
  Data.b 0,1,1,0,0,1,1,0 
  Data.b 0,1,1,0,0,1,1,0 
  Data.b 0,1,1,0,0,1,1,0 
  Data.b 0,1,1,0,0,1,1,0 
  Data.b 0,1,1,0,0,1,1,0 
  Data.b 0,1,1,0,0,1,1,0 
  Data.b 0,0,1,1,1,1,0,0 
  
  
  Data.b 0,0,0,0,1,1,0,0 ;1 
  Data.b 0,0,0,1,1,1,0,0 
  Data.b 0,0,1,1,1,1,0,0 
  Data.b 0,0,0,0,1,1,0,0 
  Data.b 0,0,0,0,1,1,0,0 
  Data.b 0,0,0,0,1,1,0,0 
  Data.b 0,0,0,0,1,1,0,0 
  Data.b 0,0,0,0,1,1,0,0 
  
  Data.b 0,0,1,1,1,1,0,0 ;2 
  Data.b 0,1,1,0,0,1,1,0 
  Data.b 0,1,1,0,0,1,1,0 
  Data.b 0,0,0,0,1,1,0,0 
  Data.b 0,0,0,1,1,0,0,0 
  Data.b 0,0,1,1,0,0,0,0 
  Data.b 0,1,1,1,1,1,1,0 
  Data.b 0,1,1,1,1,1,1,0 
  
  
  Data.b 0,0,1,1,1,1,0,0 ;3 
  Data.b 0,1,1,0,0,1,1,0 
  Data.b 0,1,1,0,0,1,1,0 
  Data.b 0,0,0,0,1,1,0,0 
  Data.b 0,0,0,0,1,1,0,0 
  Data.b 0,1,1,0,0,1,1,0 
  Data.b 0,1,1,0,0,1,1,0 
  Data.b 0,0,1,1,1,1,0,0 
  
  Data.b 0,1,1,0,0,0,0,0 ; 4 
  Data.b 0,1,1,0,0,0,0,0 
  Data.b 0,1,1,0,0,1,1,0 
  Data.b 0,1,1,1,1,1,1,0 
  Data.b 0,1,1,1,1,1,1,0 
  Data.b 0,0,0,0,0,1,1,0 
  Data.b 0,0,0,0,0,1,1,0 
  Data.b 0,0,0,0,0,1,1,0 
  
  Data.b 0,1,1,1,1,1,1,0 ; 5 
  Data.b 0,1,1,0,0,0,0,0 
  Data.b 0,1,1,0,0,0,0,0 
  Data.b 0,1,1,1,1,1,0,0 
  Data.b 0,1,1,1,1,1,1,0 
  Data.b 0,0,0,0,0,1,1,0 
  Data.b 0,0,0,0,0,1,1,0 
  Data.b 0,1,1,1,1,1,0,0 
  
  
  Data.b 0,0,0,1,1,1,1,0 ; 6 
  Data.b 0,1,1,0,0,0,0,0 
  Data.b 0,1,1,0,0,0,0,0 
  Data.b 0,1,1,1,1,1,0,0 
  Data.b 0,1,1,1,1,1,1,0 
  Data.b 0,1,1,0,0,1,1,0 
  Data.b 0,1,1,0,0,1,1,0 
  Data.b 0,0,1,1,1,1,0,0 
  
  Data.b 0,1,1,1,1,1,1,0 ; 7 
  Data.b 0,1,1,1,1,1,1,0 
  Data.b 0,0,0,0,0,1,1,0 
  Data.b 0,0,0,0,1,1,0,0 
  Data.b 0,0,0,0,1,1,0,0 
  Data.b 0,0,0,1,1,0,0,0 
  Data.b 0,0,0,1,1,0,0,0 
  Data.b 0,0,0,1,1,0,0,0 
  
  
  Data.b 0,0,1,1,1,1,0,0 ;8 
  Data.b 0,1,1,0,0,1,1,0 
  Data.b 0,1,1,0,0,1,1,0 
  Data.b 0,0,1,1,1,1,0,0 
  Data.b 0,1,1,0,0,1,1,0 
  Data.b 0,1,1,0,0,1,1,0 
  Data.b 0,1,1,0,0,1,1,0 
  Data.b 0,0,1,1,1,1,0,0 
  
  
  Data.b 0,0,1,1,1,1,0,0 ;9 
  Data.b 0,1,1,0,0,1,1,0 
  Data.b 0,1,1,0,0,1,1,0 
  Data.b 0,1,1,1,1,1,1,0 
  Data.b 0,0,1,1,1,1,1,0 
  Data.b 0,0,0,0,0,1,1,0 
  Data.b 0,0,0,0,0,1,1,0 
  Data.b 0,0,1,1,1,1,0,0 
  
  EndDataSection
Lucagin написал(а):

Понимаю триал режим для их программы рисование шкурок, а как триал для бибиотеки?

При запуске программы, будет выскакивать окно с сообщением что использована библиотека скинов такой-то фирмы, т. е. реклама продукции.
Какие еще есть ограничения, не знаю, не пользовался библиотекой.

0


Вы здесь » PureBasic - форум » Вопросы по PureBasic » Вопросы новичка (продолжение…)