Announcement

Collapse
No announcement yet.

Slate Measure text wrong scale in 4k screen

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

    Slate Measure text wrong scale in 4k screen

    Hi Guys
    I am a bit lost here, I am trying to mesure the text size of a custom widget I am working on, because I want to draw something else in top of it.
    Apparently is not working in my 4k screen, but in a regular fullHD screen is working well, I got the right resolution.

    this is the way I am using:
    Code:
        FontMeasureService = FSlateApplication::Get().GetRenderer()->GetFontMeasureService();
        float LineWeight = FontMeasureService->Measure("Hello", TextStyle->Font).X;
    I guess I have to divide that for some DPI scale factor, but I cannot find the thing, does someone know what's that value?

    Thanks guys


    #2
    Yes, there is DPI scaling involved. Here is the answer hub on how to get the current DPI scale. https://answers.unrealengine.com/que...i-scaling.html
    Joseph Wilcox
    [Technical Director] WisEngineering
    https://www.wisedrl.com

    Comment


      #3
      Hey Thanks I saw that but it did not work for me, instead I found it looking inside the code itself, finally you have to find the master SWindow for your widget like this:
      Code:
      TSharedPtr WidgetWindow = FSlateApplication::Get().FindWidgetWindow(this->AsShared());
          float DPIScale = 1;
          if (WidgetWindow.IsValid())
          {
              DPIScale = WidgetWindow->GetNativeWindow()->GetDPIScaleFactor();
          }
      
          FVector2D Position = FVector2D(OutSize.X, ((TextLocation.GetLineIndex() * LineHeight) - EditableTextLayout->GetScrollOffset().Y) + LineHeight);
          Position.X /= DPIScale;
      Now I have my widget in the right position regardless of my screen size, kind of cool

      I have posted here if someone is messing around with this

      Cheers

      Comment

      Working...
      X