摘要:import wxfrom PIL import Imagedef ConvertToWxImage(): pilImage = Image.open('1.png') image = wx.EmptyImage(pilImage.size[0], pilImage.size[1]) image.SetData(pilImage.convert("RGB").tostring()) image.SetAlphaData(pilImage.convert("RGBA").tostring()[3::4]) bitmap = wx.Bitma
阅读全文
摘要:wx中实现了3个线程安全的函数。如果在线程中,直接访问并更新主线程的UI,会遇到问题,有时候阻塞UI或者更新不起作用,有时严重的话会引起python崩溃。三个安全线程如下:wx.PostEventwx.CallAfterwx.CallLater其中,wx.CallLater是最抽象的线程安全函数,其次是callAfter,最后是PostEvent。PostEvent用法:import timefrom threading import *import wx# Button definitionsID_START = wx.NewId()ID_STOP = wx.NewId()# Define
阅读全文
摘要:VTK6 引入了许多不兼容的变。这其中就包括关于vtkImageData中元数据管理及内存分配的方法。这些方法有些直接改变了行为或者能加了额外的参数。GetScalarTypeMin()GetScalarTypeMax()GetScalarType()SetScalarType(int scalar_type)GetNumberOfScalarComponents()SetNumberOfScalarComponents(int n)AllocateScalars()GetNumberOfScalarComponents(), GetScalarType(), GetScalarTypeMin
阅读全文
摘要:VTK6 引入了许多不兼容的变。其中之一是删除vtkDataObject中所有有关管道的方法。下面列出来的就是其中的一些方法:SetUpdateExtent(int piece, int numPieces, int ghostLevel)SetUpdateExtent(int piece, int numPieces)SetUpdateExtent(int extent[6])SetUpdateExtent(int x0, int x1, int y0, int y1, int z0, int z1)int* GetUpdateExtent()GetUpdateExtent(int&
阅读全文
摘要:VTK6 引入了许多不兼容的变。其中之一是删除vtkDataObject中所有有关管道的方法。下面列出来的就是其中的一些方法:ShouldIReleaseData()SetReleaseDataFlag()GetReleaseDataFlag()ReleaseDataFlagToOn()ReleaseDataFlagToOff()所有上面的方法(排除ShouldIReleaseData)都被迁移到vtkDemandDrivenPipeline中,任何先前的代码都可以使用vtkDemandDrivenPipeline的方法来替换。ShouldIReleaseData是个方便的方法被管道执行过程使
阅读全文
摘要:VTK6 引入了许多不兼容的变。其中之一是删除vtkDataObject中所有有关管道的方法。其中之一就是SetWholeExtent()。SetWholeExtent()方法先前被用来管理结构话数据的所有可能的元数据片数,但是不能被正确的用来设置结构话数据的extent。例子1在output information中,我们可以简单的替换成WHOLE_EXTENT()设置。int vtkMyReader::RequestInformation(vtkInformation*, vtkInformationVector**, vtkInformationVector* outInf...
阅读全文
摘要:VTK6 引入了许多不兼容的变。其中之一是删除vtkDataObject中所有有关管道的方法。其中的两个方法就是SetExtentTranslator() 和 GetExtentTranslator()。这个函数现在还存在在vtkStreamingDemandDrivenPipeline的方法中。例子1:vtkDataObject* dobj = algorithm->GetOutput();dobj->GetExtentTranslator();替换成:vtkStreamingDemandDrivenPipeline::GetExtentTranslator( algorit..
阅读全文
摘要:在先前的vtk中,如vtkPointSetAlgorithm 等算法派生类中定义了虚方法:ExecuteInformation() 和 ExecuteData()。这些方法的定义是为了平稳的从VTK4到VTK5中。我们从如下的类中删除了ExecuteInformation() 和 ExecuteData():vtkDataObjectAlgorithmvtkGenericDataSetAlgorithmvtkHyperOctreeAlgorithmvtkPiecewiseFunctionAlgorithmvtkPolyDataAlgorithmvtkRectilinearGridAlgorit
阅读全文
摘要:VTK6 引入了许多不兼容的变。其中之一是删除vtkDataObject中所有有关管道的方法。下面讨论update方法并提供迁移现有代码的建议。Update()vtkDataObject::Update()在先前是一个方便的回调Update()方法,触发算法产生数据对象。由于数据对象已经不在引用它的产生者了,所有data object的update被移掉了。例子1vtkDataObject* dobj = someAlgorithm->GetOutput();dobj->Update();变成:someAlgorithm->Update();例子2vtkDataObject*
阅读全文
摘要:VTK6 引入了许多不兼容的变。其中之一是删除vtkDataObject中所有有关管道的方法。其中的两个方法就是GetPipelineInformation() 和 GetExecutive()。这些方法被移到vtkAlgorithm 和vtkExecutive类中。例子1vtkDataObject* dobj = algorithm->GetOutput();vtkExecutive* exec = dobj->GetExecutive();替换成:vtkExecutive* exec = algorithm->GetExecutive();例子2vtkDataObject
阅读全文
摘要:VTK6 引入了许多不兼容的变。其中之一是删除vtkDataObject中所有有关管道的方法。其中的一个方法就是GetProducerPort()。一般,先前使用这个方法如下例子:vtkPolyData* pd = vtkPolyData::New();someAlgorithm->SetInputConnection(pd->GetProducerPort());在vtk6 中,应该改成下面的用法:vtkPolyData* pd = vtkPolyData::New();someAlgorithm->SetInputData(pd);
阅读全文
摘要:VTK6 引入了许多不兼容的变化,这其中就包括用SetInputData()和SetInputConnection()替换SetInput()方法。在先前的版本中,VTK4 引入了SetInput()方法,VTK5中引入了SetInputConnection()。下面举一些例子:在如下例子中,虽然我只演示了替换SetInput(),读者可以类比替换SetSource()。在例子中,读者可以搜索相应的替换方法SetSourceConnection() or SetSourceData()。 例子1anotherFilter->SetInput(aFilter->GetOutput()
阅读全文